Konfiguracja aplikacji
Przegląd opcji konfiguracyjnych dla aplikacji Nette.
Application
application:
# wyświetlić panel "Nette Application" w Tracy BlueScreen?
debugger: ... # (bool) domyślnie true
# czy przy błędzie będzie wywoływany error-presenter?
# ma efekt tylko w trybie deweloperskim
catchExceptions: ... # (bool) domyślnie true
# nazwa error-presentera
errorPresenter: Error # (string|array) domyślnie 'Nette:Error'
# definiuje aliasy dla presenterów i akcji
aliases: ...
# definiuje reguły tłumaczenia nazwy presentera na klasę
mapping: ...
# nieprawidłowe linki nie generują ostrzeżeń?
# ma efekt tylko w trybie deweloperskim
silentLinks: ... # (bool) domyślnie false
Od wersji nette/application
3.2 można zdefiniować parę error-presenterów:
application:
errorPresenter:
4xx: Error4xx # dla wyjątku Nette\Application\BadRequestException
5xx: Error5xx # dla pozostałych wyjątków
Opcja silentLinks
określa, jak Nette zachowa się w trybie deweloperskim, gdy generowanie linku nie powiodło
się (np. dlatego, że presenter nie istnieje itp.). Domyślna wartość false
oznacza, że Nette zgłosi błąd
E_USER_WARNING
. Ustawienie na true
spowoduje stłumienie tego komunikatu błędu. W środowisku
produkcyjnym E_USER_WARNING
jest zawsze zgłaszany. To zachowanie możemy również kontrolować, ustawiając
zmienną presentera $invalidLinkMode.
Aliasy upraszczają linkowanie do często używanych presenterów.
Mapowanie definiuje reguły, według których z nazwy presentera wyprowadzana jest nazwa klasy.
Automatyczna rejestracja presenterów
Nette automatycznie dodaje presentery jako usługi do kontenera DI, co znacząco przyspiesza ich tworzenie. Sposób, w jaki Nette wyszukuje presentery, można skonfigurować:
application:
# szukać presenterów w Composer class map?
scanComposer: ... # (bool) domyślnie true
# maska, której musi odpowiadać nazwa klasy i pliku
scanFilter: ... # (string) domyślnie '*Presenter'
# w których katalogach szukać presenterów?
scanDirs: # (string[]|false) domyślnie '%appDir%'
- %vendorDir%/mymodule
Katalogi podane w scanDirs
nie nadpisują wartości domyślnej %appDir%
, ale uzupełniają ją, więc
scanDirs
będzie zawierać obie ścieżki %appDir%
i %vendorDir%/mymodule
. Jeśli
chcielibyśmy pominąć katalog domyślny, użyjemy wykrzyknika, który nadpisze wartość:
application:
scanDirs!:
- %vendorDir%/mymodule
Skanowanie katalogów można wyłączyć, podając wartość false
. Nie zalecamy całkowitego wyłączania
automatycznego dodawania presenterów, ponieważ w przeciwnym razie dojdzie do obniżenia wydajności aplikacji.
Szablony Latte
Tym ustawieniem można globalnie wpłynąć na zachowanie Latte w komponentach i presenterach.
latte:
# wyświetlić panel Latte w Tracy Bar dla głównego szablonu (true) lub wszystkich komponentów (all)?
debugger: ... # (true|false|'all') domyślnie true
# generuje szablony z nagłówkiem declare(strict_types=1)
strictTypes: ... # (bool) domyślnie false
# włącza tryb [ścisłego parsera |latte:develop#striktní režim]
strictParsing: ... # (bool) domyślnie false
# aktywuje [kontrolę wygenerowanego kodu |latte:develop#Kontrola vygenerovaného kódu]
phpLinter: ... # (string) domyślnie null
# ustawia locale
locale: cs_CZ # (string) domyślnie null
# klasa obiektu $this->template
templateClass: App\MyTemplateClass # domyślnie Nette\Bridges\ApplicationLatte\DefaultTemplate
Jeśli używasz Latte w wersji 3, możesz dodawać nowe rozszerzenia za pomocą:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Jeśli używasz Latte w wersji 2, możesz rejestrować nowe tagi, podając nazwę klasy lub referencję do usługi. Domyślnie
wywoływana jest metoda install()
, ale można to zmienić, podając nazwę innej metody:
latte:
# rejestracja niestandardowych znaczników Latte
macros:
- App\MyLatteMacros::register # metoda statyczna, nazwa klasy lub callable
- @App\MyLatteMacrosFactory # usługa z metodą install()
- @App\MyLatteMacrosFactory::register # usługa z metodą register()
services:
- App\MyLatteMacrosFactory
Routing
Podstawowe ustawienia:
routing:
# wyświetlić panel routingu w Tracy Bar?
debugger: ... # (bool) domyślnie true
# serializuje router do kontenera DI
cache: ... # (bool) domyślnie false
Routing zazwyczaj definiujemy w klasie RouterFactory. Alternatywnie trasy można definiować
również w konfiguracji za pomocą par maska: akcja
, ale ten sposób nie oferuje tak szerokiej zmienności w
ustawieniach:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Stałe
Tworzenie stałych PHP.
constants:
Foobar: 'baz'
Po uruchomieniu aplikacji zostanie utworzona stała Foobar
.
Stałe nie powinny służyć jako swego rodzaju globalnie dostępne zmienne. Do przekazywania wartości do obiektów wykorzystaj dependency injection.
PHP
Ustawienia dyrektyw PHP. Przegląd wszystkich dyrektyw znajdziesz na php.net.
php:
date.timezone: Europe/Prague
Usługi DI
Te usługi są dodawane do kontenera DI:
Nazwa | Typ | Opis |
---|---|---|
application.application |
Nette\Application\Application | uruchamiacz całej aplikacji |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\PresenterFactory | fabryka presenterów |
application.### |
Nette\Application\UI\Presenter | poszczególne presentery |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | fabryka obiektu Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | fabryka dla $this->template |