Nette Documentation Preview

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.

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


Pro vytvoření emailové zprávy můžeme použít $container->nette->createMail() nebo můžeme předat továrnu na mail jako parametr.

services:
	myModel: MyModel(@nette.mailFactory)

Chcete-li zjistit, jaké další továrny Nette můžete používat, podívejte se do zkompilovaného SystemContaineru v /tmp/cache/_Nette.Configurator/_-hromada-čísel.php a hledejte metody, jejichž název začíná na createServiceNette__. Nebo použijte panel do Debugger Baru.

Databáze

Můžeme vytvořit více připojení, které uvedeme pod klíčem database. Takto vytvoříme spojení nazvané default a dostupné pod $container->nette->database->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'

Pro vytvoření formuláře vhodného pro použití mimo presentery můžeme použít $container->nette->createBasicForm().

Šablony

Lze přepínat HTML a XHTML režim šablon:

nette:
	xhtml: no  # výchozí je true

Základní nakonfigurovanou šablonu s helpery a Latte vyrobí $container->nette->createTemplate().

DI

nette:
	container:
		debugger: true  # aktivuje panel v Debugger baru

Debugger

Lze konfigurovat některé parametry Nette\Diagnostics\Debugger a nastavovat panely do Debugger baru.

nette:
	debugger:
		email: %webmasterEmail%
		strictMode: TRUE
		editor: ...
		browser: ...
		bar: # panely do Debugger baru
			- Nette\DI\Diagnostics\ContainerPanel # alias DI Container baru
			- IncludePanel
			- XDebugHelper('myIdeKey')
			- MyPanel(@MyService)
		blueScreen: # panely do Laděnky
			- DoctrinePanel::renderException

Cache

Objekt pro přístup ke keši vyrobí $container->nette->createCache($namespace = NULL).

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


factories:
	nette.mail:
		setup:
			- addHeader('X-Mailer', 'Nette Framework 2.0')

Nebo vytvořit nové služby poděděním existujících: (přidá metodu $container->createSecuredForm())

factories:
	securedForm < nette.basicForm:
		setup:
			- addProtection()

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:
		class: Nette\Database\Connection(%dsn%, %user%, %password%)

#nebo ve dvou řádcích:
		class: Nette\Database\Connection
		arguments: [%dsn%, %user%, %password%]