Configurația aplicațiilor
Prezentare generală a opțiunilor de configurare pentru aplicațiile Nette.
Application
application:
# afișează panoul "Nette Application" în Tracy BlueScreen?
debugger: ... # (bool) implicit este true
# se va apela error-presenter în caz de eroare?
# are efect doar în modul de dezvoltare
catchExceptions: ... # (bool) implicit este true
# numele error-presenterului
errorPresenter: Error # (string|array) implicit este 'Nette:Error'
# definește aliasuri pentru presentere și acțiuni
aliases: ...
# definește reguli pentru traducerea numelui presenterului în clasă
mapping: ...
# linkurile invalide nu generează avertismente?
# are efect doar în modul de dezvoltare
silentLinks: ... # (bool) implicit este false
De la versiunea nette/application
3.2 se poate defini o pereche de error-presentere:
application:
errorPresenter:
4xx: Error4xx # pentru excepția Nette\Application\BadRequestException
5xx: Error5xx # pentru celelalte excepții
Opțiunea silentLinks
determină cum se comportă Nette în modul de dezvoltare când generarea unui link
eșuează (de exemplu, pentru că nu există presenterul etc.). Valoarea implicită false
înseamnă că Nette va
arunca o eroare E_USER_WARNING
. Setarea la true
va suprima acest mesaj de eroare. În mediul de
producție, E_USER_WARNING
este întotdeauna aruncat. Acest comportament poate fi, de asemenea, influențat prin
setarea variabilei presenterului $invalidLinkMode.
Aliasurile simplifică legarea la presenterele utilizate frecvent.
Maparea definește reguli, conform cărora din numele presenterului se deduce numele clasei.
Înregistrarea automată a presenterelor
Nette adaugă automat presenterele ca servicii în containerul DI, ceea ce accelerează semnificativ crearea lor. Modul în care Nette localizează presenterele poate fi configurat:
application:
# caută presentere în Composer class map?
scanComposer: ... # (bool) implicit este true
# masca pe care trebuie să o respecte numele clasei și al fișierului
scanFilter: ... # (string) implicit este '*Presenter'
# în ce directoare să caute presentere?
scanDirs: # (string[]|false) implicit este '%appDir%'
- %vendorDir%/mymodule
Directoarele specificate în scanDirs
nu suprascriu valoarea implicită %appDir%
, ci o completează,
deci scanDirs
va conține ambele căi %appDir%
și %vendorDir%/mymodule
. Dacă dorim să
omitem directorul implicit, folosim semnul
exclamării, care suprascrie valoarea:
application:
scanDirs!:
- %vendorDir%/mymodule
Scanarea directoarelor poate fi dezactivată specificând valoarea false. Nu recomandăm suprimarea completă a adăugării automate a presenterelor, deoarece altfel performanța aplicației va scădea.
Șabloane Latte
Prin această setare se poate influența global comportamentul Latte în componente și presentere.
latte:
# afișează panoul Latte în Tracy Bar pentru șablonul principal (true) sau toate componentele (all)?
debugger: ... # (true|false|'all') implicit este true
# generează șabloane cu antetul declare(strict_types=1)
strictTypes: ... # (bool) implicit este false
# activează modul [parser strict |latte:develop#striktní režim]
strictParsing: ... # (bool) implicit este false
# activează [verificarea codului generat |latte:develop#Kontrola vygenerovaného kódu]
phpLinter: ... # (string) implicit este null
# setează locale
locale: cs_CZ # (string) implicit este null
# clasa obiectului $this->template
templateClass: App\MyTemplateClass # implicit este Nette\Bridges\ApplicationLatte\DefaultTemplate
Dacă utilizați Latte versiunea 3, puteți adăuga noi extensii folosind:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Dacă utilizați Latte versiunea 2, puteți înregistra noi tag-uri fie specificând numele clasei, fie o referință la
serviciu. Implicit, se apelează metoda install()
, dar acest lucru poate fi schimbat specificând numele altei
metode:
latte:
# înregistrarea tag-urilor Latte personalizate
macros:
- App\MyLatteMacros::register # metodă statică, classname sau callable
- @App\MyLatteMacrosFactory # serviciu cu metoda install()
- @App\MyLatteMacrosFactory::register # serviciu cu metoda register()
services:
- App\MyLatteMacrosFactory
Rutare
Setări de bază:
routing:
# afișează panoul de rutare în Tracy Bar?
debugger: ... # (bool) implicit este true
# serializează routerul în containerul DI
cache: ... # (bool) implicit este false
Rutarea o definim de obicei în clasa RouterFactory. Alternativ, rutele pot fi definite și în
configurație folosind perechi mască: acțiune
, dar această metodă nu oferă o varietate atât de largă în
setări:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Constante
Crearea constantelor PHP.
constants:
Foobar: 'baz'
După pornirea aplicației, va fi creată constanta Foobar
.
Constantele nu ar trebui să servească drept variabile disponibile global. Pentru transmiterea valorilor către obiecte, utilizați dependency injection.
PHP
Setarea directivelor PHP. O prezentare generală a tuturor directivelor o găsiți pe php.net.
php:
date.timezone: Europe/Prague
Servicii DI
Aceste servicii sunt adăugate în containerul DI:
Nume | Tip | Descriere |
---|---|---|
application.application |
Nette\Application\Application | lansatorul întregii aplicații |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\PresenterFactory | fabrică de presentere |
application.### |
Nette\Application\UI\Presenter | presentere individuale |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | fabrică a obiectului Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | fabrică pentru $this->template |