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 |