Uygulama yapılandırması
Nette Application'ın yapılandırma seçeneklerine genel bakış.
Application
application:
# Tracy BlueScreen'de "Nette Application" paneli gösterilsin mi?
debugger: ... # (bool) Tracy varsa etkin
# üretimde istisnaları her zaman error-presenter işler;
# bu seçenek yalnızca aynı davranışı geliştirme modunda da açar
catchExceptions: ... # (bool) varsayılan false - yani geliştirmede kapalı, üretimde her zaman açık
# error-presenter'ın adı
errorPresenter: Error # (string|array) varsayılan 'Nette:Error'
# presenter'lar ve eylemler için takma adlar tanımlar
aliases: ...
# presenter adının sınıfa çevrilme kurallarını tanımlar
mapping: ...
# geçersiz bağlantı uyarıları bastırılsın mı?
# yalnızca geliştirme modunda etkilidir
silentLinks: ... # (bool) varsayılan false
nette/application 3.2 sürümünden itibaren bir çift error presenter tanımlanabilir:
application:
errorPresenter:
4xx: Error4xx # Nette\Application\BadRequestException için
5xx: Error5xx # diğer istisnalar için
Bunları ayırmak yararlıdır, çünkü iki durum temelden farklıdır. BadRequestException (4xx kodları),
uygulamanın sorunsuz olduğu ve yalnızca ziyaretçinin var olmayan bir şey istediği anlamına gelir. Bu yüzden sitenizin
layout'unda dostça bir mesaj gösteren tam donanımlı bir presenter kullanabilirsiniz. Buna karşılık 5xx hatası, uygulamada
bir şeyin bozulduğu ve nedenini bilmediğiniz anlamına gelir. 5xx presenter'ını olabildiğince yalın tutun ki render
edilirken başka bir şey bozulmasın; ideal olarak veritabanına, layout'a veya oturum açmış kullanıcıya
dokunmamalıdır.
silentLinks seçeneği, bağlantı üretimi başarısız olduğunda (örneğin presenter var olmadığı için)
Nette'in geliştirme modunda nasıl davranacağını belirler. Varsayılan false değeri, Nette'in
E_USER_WARNING hatası tetiklemesi demektir. true yapmak bu hata mesajını bastırır. Üretim
ortamında E_USER_WARNING her zaman tetiklenir. Bu davranış, presenter'ın $invalidLinkMode değişkeni ayarlanarak
da etkilenebilir.
Takma adlar, sık kullanılan presenter'lara başvurmayı kolaylaştırır.
Mapping, sınıf adının presenter adından türetilme kurallarını tanımlar.
Presenter'ların otomatik kaydı
Nette, presenter'ları DI konteynerine servis olarak otomatik ekler, bu da oluşturulmalarını belirgin biçimde hızlandırır. Nette'in presenter'ları nasıl bulduğu yapılandırılabilir:
application:
# presenter'lar Composer sınıf haritasında aransın mı?
scanComposer: ... # (bool) varsayılan true
# sınıf ve dosya adının uyması gereken maske
scanFilter: ... # (string) varsayılan '*Presenter'
# presenter'lar hangi dizinlerde aransın?
scanDirs: # (string[]|false) varsayılan '%appDir%'
- %vendorDir%/mymodule
scanDirs içinde listelenen dizinler varsayılan %appDir% değerini değiştirmez, ona eklenir; yani
scanDirs hem %appDir% hem %vendorDir%/mymodule yollarını içerir. Varsayılan dizini
atlamak istersek ünlem işareti
kullanırız:
application:
scanDirs!:
- %vendorDir%/mymodule
Dizin taraması, değeri false yaparak kapatılabilir. Presenter'lar o zaman servis olarak kaydedilmez,
dolayısıyla decorator bölümünden
ayarlanamazlar ve oluşturulmaları yavaşlar. Bu yüzden otomatik kaydı tamamen bastırmayı önermiyoruz, çünkü uygulamanın
performansını düşürür.
Latte şablonları
Bu ayar, Latte'nin bileşenlerdeki ve presenter'lardaki davranışını genel olarak etkiler.
latte:
# Tracy Bar'da Latte paneli ana şablon için (true) mi, tüm bileşenler için (all) mi gösterilsin?
debugger: ... # (true|false|'all') Tracy varsa etkin (yalnızca hata ayıklama modunda)
# şablonları declare(strict_types=1) başlığıyla üret
strictTypes: ... # (bool) varsayılan false
# [katı ayrıştırıcı modunu |latte:develop#strict mode] etkinleştir
strictParsing: ... # (bool) varsayılan false
# değişkenlerin kapsamını döngü gövdesiyle sınırlar
scopedLoopVariables: ... # (bool) varsayılan false
# çift etiketlerdeki iç içelikten kaynaklanan girintiyi kaldırır
dedent: ... # (bool) varsayılan false
# [üretilen kodun denetimini |latte:develop#Checking Generated Code] etkinleştir
phpLinter: ... # (string) varsayılan null
# yerel ayarı belirle
locale: cs_CZ # (string) varsayılan null
# $this->template nesnesinin sınıfı
templateClass: App\MyTemplateClass # varsayılan Nette\Bridges\ApplicationLatte\DefaultTemplate
Yeni uzantıları şöyle ekleyebilirsiniz:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Yönlendirme
Temel ayarlar:
routing:
# Tracy Bar'da yönlendirme paneli gösterilsin mi?
debugger: ... # (bool) Tracy varsa etkin (yalnızca hata ayıklama modunda)
# router'ı DI konteynerine serileştir
cache: ... # (bool) varsayılan false
Yönlendirme genellikle RouterFactory
sınıfında tanımlanır. Alternatif olarak rotalar yapılandırmada maske: eylem çiftleriyle de tanımlanabilir,
ama bu yöntem pek esneklik sunmaz:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Sabitler
PHP sabitlerinin oluşturulması.
constants:
Foobar: 'baz'
Foobar sabiti uygulama başladıktan sonra oluşturulur.
Sabitler genel olarak erişilebilir değişkenler olarak kullanılmamalıdır. Nesnelere değer aktarmak için bağımlılık enjeksiyonu kullanın.
PHP
PHP direktiflerinin ayarlanması. Tüm direktiflere genel bakışı php.net adresinde bulabilirsiniz.
php:
date.timezone: Europe/Prague
DI servisleri
Bu servisler DI konteynerine eklenir:
| Ad | Tip | Açıklama |
|---|---|---|
application.application |
Nette\Application\Application | uygulama çalıştırıcısı |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\IPresenterFactory | presenter factory |
application.### |
Nette\Application\UI\Presenter | tek tek presenter'lar |
routing.router |
Nette\Routing\Router | router |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | Latte\Engine nesnesi için factory |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | $this->template için factory |