Konfigurace
Konfigurace se obykle zapisuje v NEON souboru. Se syntaxí si můžete pohrát na stránce https://ne-on.org.
Většinu parametrů Nette Frameworku lze nyní ovlivnit pomocí konfiguračního souboru. Nette Framework sám sebe
konfiguruje pomocí rozšíření DI Containeru, které přijímá
parametry v sekci nette
v konfiguračním souboru, která se nachází pod hlavní sekcí common
(pokud ji používáte).
Sessions
Lze nastavovat všechny PHP direktivy (ve formátu camelCase).
nette:
session:
autoStart: true # výchozí je smart
expiration: 10 days
name: ...
...
Doporučuje se používat autoStart: smart
, protože pak automaticky startuje session, pouze pokud je
již vytvořena.
Více o konfiguraci sessions.
Application
nette:
application:
debugger: true # panel do Laděnky
catchExceptions: ...
errorPresenter: ...
Routování
nette:
routing:
debugger: true # panel v Debugger baru
routes:
index.php: Dashboard:default
'<presenter>/<action>[/<id>]': Dashboard:default
Konfigurace rout je zatím experimentální.
Security
Uvedením pole users
vytvoříme SimpleAuthenticator, uvedením polí roles
nebo
resources
vytvoříme autorizátor Nette\Security\Permission.
nette:
security:
debugger: true # panel v Debugger baru
frames: ... # ovlivňuje hlavičku X-Frame-Options
users:
frantisek: tajneheslo
roles:
guest:
member:
admin: [member] # admin dědí od membera
resources:
file:
Framework z bezpečnostních důvodů odesílá hlavičku X-Frame-Options: SAMEORIGIN
, která říká, že
stránku lze zobrazit uvnitř jiné stránky (v elementu IFRAME) pouze pokud se nachází na stejné doméně. To může být
v některých situacích nežádoucí (například pokud vyvíjíte aplikaci pro Facebook), chování lze proto vypnout
nastavením položky frames: yes
.
Maily
Standardní mailer je SendmailMailer, uvedením smtp
aktivujeme SmtpMailer.
nette:
mailer:
smtp: true # zapne SmtpMailer místo SendmailMailer
# dále lze uvést host, port, username, password, secure, timeout
Databáze
Můžeme vytvořit více připojení, které uvedeme pod klíčem database
. Takto vytvoříme spojení nazvané
default
.
nette:
database:
default:
dsn: "sqlite2:%appDir%/models/demo.db"
user: ...
password: ...
options: [PDO::MYSQL_ATTR_COMPRESS = true]
debugger: false # panel v Debugger baru
explain: false # explain dotazů v Debugger baru
reflection: discovered # nebo conventional nebo název třídy
Framework tak vytvoří nejen objekt Nette\Database\Connection
, ale nastavují mu i pomocné objekty jako
reflection & cache a ve vývojářském režimu přidá panel do Debugger baru.
V rámci konfiguračního souboru se můžeme ke službě dostat přes autowiring (@Nette\Database\Connection
),
přes název služby (@nette.database.default
) nebo si vytvořit alias a ten používat:
services:
database: @nette.database.default
authorizator: Auth(@database)
Formuláře
V konfiguračním souboru lze změnit výchozí chybové hlášky.
nette:
forms:
messages:
EQUAL: 'Please enter %s.'
FILLED: 'Please complete mandatory field.'
MIN_LENGTH: 'Please enter a value of at least %d characters.'
EMAIL: '%label must be valid e-mail'
Šablony
Lze přepínat HTML a XHTML režim šablon:
nette:
xhtml: no # výchozí je false
DI
nette:
container:
debugger: true # aktivuje panel v Debugger baru
Debugger
Lze konfigurovat některé parametry Tracy (dříve Nette\Diagnostics\Debugger
) a nastavovat panely do
Debugger baru.
nette:
debugger:
email: %webmasterEmail%
strictMode: TRUE
editor: ...
browser: ...
bar: # panely do Debugger baru
- IncludePanel
- XDebugHelper('myIdeKey')
- MyPanel(@MyService)
blueScreen: # panely do Laděnky
- DoctrinePanel::renderException
Low-level úpravy
Všechna tato nastavení ovlivňují podobu výsledného systémového DI kontejneru. Oproti přímému zápisu do sekcí
services
či factories
nabízejí srozumitelnější a stručnější syntax. Nicméně zůstává
možnost si jednotlivé služby ještě „doladit“ na nižší úrovni:
services:
nette.mailer:
class: MySmtpMailer
nette.presenterFactory:
class: MyPresenterFactory
Nebo vytvořit nové služby poděděním existujících:
services:
myPresenterFactory < nette.presenterFactory
setup:
- setMapping([])
Vlastní služby
Konfigurační soubor je místem, kam umísťujeme definice vlastních služeb. Slouží k tomu sekce services
.
Například tato definice služby:
services:
database: Nette\Database\Connection(%dsn%, %user%, %password%)
# nebo ve dvou řádcích:
database:
factory: Nette\Database\Connection(%dsn%, %user%, %password%)
# nebo ve třech řádcích :-)
database:
class: Nette\Database\Connection
arguments: [%dsn%, %user%, %password%]