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 |