Alkalmazások konfigurálása
A Nette alkalmazások konfigurációs lehetőségeinek áttekintése.
Application
application:
# megjelenjen a "Nette Application" panel a Tracy BlueScreen-en?
debugger: ... # (bool) alapértelmezett: true
# hiba esetén meghívódjon az error-presenter?
# csak fejlesztői módban van hatása
catchExceptions: ... # (bool) alapértelmezett: true
# az error-presenter neve
errorPresenter: Error # (string|array) alapértelmezett: 'Nette:Error'
# aliasokat definiál presenterekhez és akciókhoz
aliases: ...
# szabályokat definiál a presenter nevének osztályra való fordításához
mapping: ...
# a hibás linkek nem generálnak figyelmeztetést?
# csak fejlesztői módban van hatása
silentLinks: ... # (bool) alapértelmezett: false
A nette/application
3.2-es verziójától kezdve definiálható egy error-presenter pár:
application:
errorPresenter:
4xx: Error4xx # Nette\Application\BadRequestException kivételhez
5xx: Error5xx # egyéb kivételekhez
A silentLinks
opció meghatározza, hogyan viselkedik a Nette fejlesztői módban, ha a link generálása
sikertelen (például mert nem létezik a presenter stb.). Az alapértelmezett false
érték azt jelenti, hogy a
Nette E_USER_WARNING
hibát dob. true
-ra állítva ez a hibaüzenet elnyomásra kerül. Éles
környezetben az E_USER_WARNING
mindig kiváltódik. Ezt a viselkedést a presenter $invalidLinkMode változójának
beállításával is befolyásolhatjuk.
Az Aliasok egyszerűsítik a hivatkozást a gyakran használt presenterekre.
A Mapping definiálja a szabályokat, amelyek alapján a presenter nevéből levezetődik az osztály neve.
Presenterek automatikus regisztrációja
A Nette automatikusan hozzáadja a presentereket szolgáltatásként a DI konténerhez, ami jelentősen felgyorsítja azok létrehozását. A Nette presenterek felkutatásának módja konfigurálható:
application:
# keresse a presentereket a Composer class map-ben?
scanComposer: ... # (bool) alapértelmezett: true
# maszk, amelynek meg kell felelnie az osztály és a fájl nevének
scanFilter: ... # (string) alapértelmezett: '*Presenter'
# mely könyvtárakban keresse a presentereket?
scanDirs: # (string[]|false) alapértelmezett: '%appDir%'
- %vendorDir%/mymodule
A scanDirs
-ben megadott könyvtárak nem írják felül az alapértelmezett %appDir%
értéket, hanem
kiegészítik azt, így a scanDirs
mindkét utat tartalmazni fogja: %appDir%
és
%vendorDir%/mymodule
. Ha az alapértelmezett könyvtárat ki szeretnénk hagyni, használjuk a felkiáltójelet, amely felülírja az
értéket:
application:
scanDirs!:
- %vendorDir%/mymodule
A könyvtárak szkennelése kikapcsolható a false érték megadásával. Nem javasoljuk a presenterek automatikus hozzáadásának teljes elnyomását, mert ez csökkenti az alkalmazás teljesítményét.
Latte sablonok
Ezzel a beállítással globálisan befolyásolható a Latte viselkedése a komponensekben és presenterekben.
latte:
# megjelenjen a Latte panel a Tracy Bar-ban a fő sablonhoz (true) vagy az összes komponenshez (all)?
debugger: ... # (true|false|'all') alapértelmezett: true
# generál sablonokat declare(strict_types=1) fejléccel
strictTypes: ... # (bool) alapértelmezett: false
# bekapcsolja a [szigorú parser |latte:develop#striktní režim] módot
strictParsing: ... # (bool) alapértelmezett: false
# aktiválja a [generált kód ellenőrzését |latte:develop#Kontrola vygenerovaného kódu]
phpLinter: ... # (string) alapértelmezett: null
# beállítja a locale-t
locale: cs_CZ # (string) alapértelmezett: null
# a $this->template objektum osztálya
templateClass: App\MyTemplateClass # alapértelmezett: Nette\Bridges\ApplicationLatte\DefaultTemplate
Ha a Latte 3-as verzióját használja, új bővítményeket adhat hozzá a következőkkel:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Ha a Latte 2-es verzióját használja, új tag-eket regisztrálhat akár az osztálynév megadásával, akár egy
szolgáltatásra való hivatkozással. Alapértelmezés szerint az install()
metódus hívódik meg, de ezt meg lehet
változtatni egy másik metódus nevének megadásával:
latte:
# egyéni Latte tag-ek regisztrálása
macros:
- App\MyLatteMacros::register # statikus metódus, classname vagy callable
- @App\MyLatteMacrosFactory # szolgáltatás install() metódussal
- @App\MyLatteMacrosFactory::register # szolgáltatás register() metódussal
services:
- App\MyLatteMacrosFactory
Routing
Alapbeállítások:
routing:
# megjelenjen a routing panel a Tracy Bar-ban?
debugger: ... # (bool) alapértelmezett: true
# szerializálja a routert a DI konténerbe
cache: ... # (bool) alapértelmezett: false
A routingot általában a RouterFactory
osztályban definiáljuk. Alternatívaként a route-okat a konfigurációban is definiálhatjuk maszk: akció
párokkal, de ez a módszer nem kínál olyan széleskörű beállítási lehetőségeket:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Konstansok
PHP konstansok létrehozása.
constants:
Foobar: 'baz'
Az alkalmazás indítása után létrejön a Foobar
konstans.
A konstansok nem szolgálhatnak valamiféle globálisan elérhető változóként. Értékek objektumokba való átadásához használja a dependency injectiont.
PHP
PHP direktívák beállítása. Az összes direktíva áttekintése megtalálható a php.net oldalon.
php:
date.timezone: Europe/Prague
DI szolgáltatások
Ezek a szolgáltatások kerülnek hozzáadásra a DI konténerhez:
Név | Típus | Leírás |
---|---|---|
application.application |
Nette\Application\Application | az egész alkalmazás indítója |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\PresenterFactory | presenter factory |
application.### |
Nette\Application\UI\Presenter | egyes presenterek |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | Latte\Engine objektum factory-ja |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | factory a $this->template számára |