Διαμόρφωση εφαρμογών
Επισκόπηση των επιλογών διαμόρφωσης για τις Εφαρμογές Nette.
Application
application:
# εμφάνιση του πίνακα "Nette Application" στο Tracy BlueScreen;
debugger: ... # (bool) προεπιλογή είναι true
# θα κληθεί ο error-presenter σε περίπτωση σφάλματος;
# ισχύει μόνο σε κατάσταση ανάπτυξης
catchExceptions: ... # (bool) προεπιλογή είναι true
# όνομα του error-presenter
errorPresenter: Error # (string|array) προεπιλογή είναι 'Nette:Error'
# ορίζει ψευδώνυμα για presenters και actions
aliases: ...
# ορίζει κανόνες για τη μετάφραση του ονόματος του presenter σε κλάση
mapping: ...
# οι μη έγκυροι σύνδεσμοι δεν δημιουργούν προειδοποιήσεις;
# ισχύει μόνο σε κατάσταση ανάπτυξης
silentLinks: ... # (bool) προεπιλογή είναι false
Από την έκδοση nette/application
3.2, μπορείτε να ορίσετε ένα ζεύγος
error-presenters:
application:
errorPresenter:
4xx: Error4xx # για την εξαίρεση Nette\Application\BadRequestException
5xx: Error5xx # για άλλες εξαιρέσεις
Η επιλογή silentLinks
καθορίζει πώς συμπεριφέρεται το Nette στην
κατάσταση ανάπτυξης όταν η δημιουργία ενός συνδέσμου αποτυγχάνει (για
παράδειγμα, επειδή ο presenter δεν υπάρχει, κ.λπ.). Η προεπιλεγμένη τιμή
false
σημαίνει ότι το Nette θα δημιουργήσει ένα σφάλμα
E_USER_WARNING
. Η ρύθμιση σε true
θα καταστείλει αυτό το μήνυμα
σφάλματος. Στο περιβάλλον παραγωγής, το E_USER_WARNING
δημιουργείται
πάντα. Αυτή η συμπεριφορά μπορεί επίσης να ελεγχθεί ορίζοντας τη
μεταβλητή του presenter $invalidLinkMode.
Τα Ψευδώνυμα απλοποιούν τη σύνδεση σε συχνά χρησιμοποιούμενους presenters.
Η Αντιστοίχιση ορίζει κανόνες, σύμφωνα με τους οποίους το όνομα της κλάσης προκύπτει από το όνομα του presenter.
Αυτόματη καταχώρηση presenters
Το Nette προσθέτει αυτόματα τους presenters ως υπηρεσίες στο DI container, γεγονός που επιταχύνει σημαντικά τη δημιουργία τους. Ο τρόπος με τον οποίο το Nette βρίσκει τους presenters μπορεί να διαμορφωθεί:
application:
# αναζήτηση presenters στο Composer class map;
scanComposer: ... # (bool) προεπιλογή είναι true
# μάσκα που πρέπει να ταιριάζει με το όνομα της κλάσης και του αρχείου
scanFilter: ... # (string) προεπιλογή είναι '*Presenter'
# σε ποιους καταλόγους να αναζητηθούν οι presenters;
scanDirs: # (string[]|false) προεπιλογή είναι '%appDir%'
- %vendorDir%/mymodule
Οι κατάλογοι που αναφέρονται στο scanDirs
δεν αντικαθιστούν την
προεπιλεγμένη τιμή %appDir%
, αλλά την συμπληρώνουν, οπότε το
scanDirs
θα περιέχει και τις δύο διαδρομές %appDir%
και
%vendorDir%/mymodule
. Αν θέλουμε να παραλείψουμε τον προεπιλεγμένο
κατάλογο, χρησιμοποιούμε ένα θαυμαστικό, το οποίο
αντικαθιστά την τιμή:
application:
scanDirs!:
- %vendorDir%/mymodule
Η σάρωση καταλόγων μπορεί να απενεργοποιηθεί καθορίζοντας την τιμή false. Δεν συνιστούμε την πλήρη καταστολή της αυτόματης προσθήκης presenters, καθώς αυτό θα μειώσει την απόδοση της εφαρμογής.
Templates Latte
Με αυτή τη ρύθμιση, μπορείτε να επηρεάσετε καθολικά τη συμπεριφορά του Latte στα components και τους presenters.
latte:
# εμφάνιση του πίνακα Latte στο Tracy Bar για το κύριο template (true) ή όλα τα components (all);
debugger: ... # (true|false|'all') προεπιλογή είναι true
# δημιουργεί templates με την κεφαλίδα declare(strict_types=1)
strictTypes: ... # (bool) προεπιλογή είναι false
# ενεργοποιεί την [κατάσταση αυστηρού parser |latte:develop#striktní režim]
strictParsing: ... # (bool) προεπιλογή είναι false
# ενεργοποιεί τον [έλεγχο του παραγόμενου κώδικα |latte:develop#Kontrola vygenerovaného kódu]
phpLinter: ... # (string) προεπιλογή είναι null
# ορίζει το locale
locale: cs_CZ # (string) προεπιλογή είναι null
# κλάση του αντικειμένου $this->template
templateClass: App\MyTemplateClass # προεπιλογή είναι Nette\Bridges\ApplicationLatte\DefaultTemplate
Αν χρησιμοποιείτε την έκδοση 3 του Latte, μπορείτε να προσθέσετε νέες επεκτάσεις χρησιμοποιώντας:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Αν χρησιμοποιείτε την έκδοση 2 του Latte, μπορείτε να καταχωρήσετε νέα
tags (macros) είτε καθορίζοντας το όνομα της κλάσης είτε με αναφορά σε μια
υπηρεσία. Ως προεπιλογή, καλείται η μέθοδος install()
, αλλά αυτό
μπορεί να αλλάξει καθορίζοντας το όνομα μιας άλλης μεθόδου:
latte:
# καταχώρηση προσαρμοσμένων Latte tags
macros:
- App\MyLatteMacros::register # στατική μέθοδος, όνομα κλάσης ή callable
- @App\MyLatteMacrosFactory # υπηρεσία με μέθοδο install()
- @App\MyLatteMacrosFactory::register # υπηρεσία με μέθοδο register()
services:
- App\MyLatteMacrosFactory
Δρομολόγηση
Βασικές ρυθμίσεις:
routing:
# εμφάνιση του πίνακα δρομολόγησης στο Tracy Bar;
debugger: ... # (bool) προεπιλογή είναι true
# σειριοποιεί τον router στο DI container
cache: ... # (bool) προεπιλογή είναι false
Η δρομολόγηση συνήθως ορίζεται στην κλάση RouterFactory. Εναλλακτικά, οι
διαδρομές (routes) μπορούν επίσης να οριστούν στη διαμόρφωση
χρησιμοποιώντας ζεύγη mask: action
, αλλά αυτή η μέθοδος δεν προσφέρει
τόσο μεγάλη ευελιξία στις ρυθμίσεις:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Σταθερές
Δημιουργία σταθερών PHP.
constants:
Foobar: 'baz'
Μετά την εκκίνηση της εφαρμογής, θα δημιουργηθεί η σταθερά
Foobar
.
Οι σταθερές δεν πρέπει να χρησιμεύουν ως κάποιου είδους καθολικά διαθέσιμες μεταβλητές. Για τη μεταβίβαση τιμών σε αντικείμενα, χρησιμοποιήστε το dependency injection.
PHP
Ρύθμιση οδηγιών PHP. Μια επισκόπηση όλων των οδηγιών μπορείτε να βρείτε στο php.net.
php:
date.timezone: Europe/Prague
Υπηρεσίες DI
Αυτές οι υπηρεσίες προστίθενται στο DI container:
Όνομα | Τύπος | Περιγραφή |
---|---|---|
application.application |
Nette\Application\Application | εκκινητής ολόκληρης της εφαρμογής |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\PresenterFactory | factory για presenters |
application.### |
Nette\Application\UI\Presenter | μεμονωμένοι presenters |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | factory αντικειμένου Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | factory για $this->template |