Configurazione delle Applicazioni

Panoramica delle opzioni di configurazione per le Applicazioni Nette.

Application

application:
	# visualizzare il pannello "Nette Application" in Tracy BlueScreen?
	debugger: ...           # (bool) il default è true

	# verrà chiamato l'error-presenter in caso di errore?
	# ha effetto solo in modalità sviluppo
	catchExceptions: ...    # (bool) il default è true

	# nome dell'error-presenter
	errorPresenter: Error   # (string|array) il default è 'Nette:Error'

	# definisce alias per presenter e azioni
	aliases: ...

	# definisce le regole per la traduzione del nome del presenter in classe
	mapping: ...

	# i link errati non generano avvisi?
	# ha effetto solo in modalità sviluppo
	silentLinks: ...        # (bool) il default è false

Dalla versione nette/application 3.2 è possibile definire una coppia di error-presenter:

application:
	errorPresenter:
		4xx: Error4xx   # per l'eccezione Nette\Application\BadRequestException
		5xx: Error5xx   # per le altre eccezioni

L'opzione silentLinks determina come Nette si comporta in modalità sviluppo quando la generazione di un link fallisce (ad esempio perché il presenter non esiste, ecc.). Il valore predefinito false significa che Nette genera un errore E_USER_WARNING. Impostandolo su true si sopprime questo messaggio di errore. Nell'ambiente di produzione, E_USER_WARNING viene sempre generato. Questo comportamento può essere influenzato anche impostando la variabile del presenter $invalidLinkMode.

Gli Alias semplificano il collegamento ai presenter usati frequentemente.

La Mappatura definisce le regole, secondo le quali dal nome del presenter si deriva il nome della classe.

Registrazione automatica dei presenter

Nette aggiunge automaticamente i presenter come servizi al container DI, il che accelera notevolmente la loro creazione. Come Nette trova i presenter può essere configurato:

application:
	# cercare i presenter nella mappa delle classi di Composer?
	scanComposer: ...      # (bool) il default è true

	# maschera a cui devono corrispondere il nome della classe e del file
	scanFilter: ...        # (string) il default è '*Presenter'

	# in quali directory cercare i presenter?
	scanDirs:              # (string[]|false) il default è '%appDir%'
		- %vendorDir%/mymodule

Le directory specificate in scanDirs non sovrascrivono il valore predefinito %appDir%, ma lo completano, quindi scanDirs conterrà entrambi i percorsi %appDir% e %vendorDir%/mymodule. Se volessimo omettere la directory predefinita, useremmo un punto esclamativo, che sovrascrive il valore:

application:
	scanDirs!:
		- %vendorDir%/mymodule

La scansione delle directory può essere disattivata specificando il valore false. Non consigliamo di sopprimere completamente l'aggiunta automatica dei presenter, perché altrimenti le prestazioni dell'applicazione diminuiranno.

Template Latte

Con questa impostazione è possibile influenzare globalmente il comportamento di Latte nei componenti e nei presenter.

latte:
	# visualizzare il pannello Latte nella Tracy Bar per il template principale (true) o tutti i componenti (all)?
	debugger: ...        # (true|false|'all') il default è true

	# genera template con l'intestazione declare(strict_types=1)
	strictTypes: ...     # (bool) il default è false

	# attiva la modalità [parser rigoroso |latte:develop#striktní režim]
	strictParsing: ...   # (bool) il default è false

	# attiva il [controllo del codice generato |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) il default è null

	# imposta la locale
	locale: it_IT        # (string) il default è null

	# classe dell'oggetto $this->template
	templateClass: App\MyTemplateClass # il default è Nette\Bridges\ApplicationLatte\DefaultTemplate

Se usi Latte versione 3, puoi aggiungere nuove estensioni usando:

latte:
	extensions:
		- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)

Se usi Latte versione 2, puoi registrare nuovi tag specificando il nome della classe o un riferimento a un servizio. Per impostazione predefinita, viene chiamato il metodo install(), ma questo può essere modificato specificando il nome di un altro metodo:

latte:
	# registrazione di tag Latte personalizzati
	macros:
		- App\MyLatteMacros::register         # metodo statico, nomeclasse o callable
		- @App\MyLatteMacrosFactory           # servizio con metodo install()
		- @App\MyLatteMacrosFactory::register # servizio con metodo register()

services:
	- App\MyLatteMacrosFactory

Routing

Impostazioni di base:

routing:
	# visualizzare il pannello di routing nella Tracy Bar?
	debugger: ...   # (bool) il default è true

	# serializza il router nel container DI
	cache: ...      # (bool) il default è false

Il routing viene solitamente definito nella classe RouterFactory. In alternativa, le route possono essere definite anche nella configurazione utilizzando coppie maschera: azione, ma questo metodo non offre una così ampia variabilità nelle impostazioni:

routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default

Costanti

Creazione di costanti PHP.

constants:
	Foobar: 'baz'

Dopo l'avvio dell'applicazione, verrà creata la costante Foobar.

Le costanti non dovrebbero servire come una sorta di variabili globalmente disponibili. Per passare valori agli oggetti, utilizza la dependency injection.

PHP

Impostazione delle direttive PHP. Una panoramica di tutte le direttive si trova su php.net.

php:
	date.timezone: Europe/Rome

Servizi DI

Questi servizi vengono aggiunti al container DI:

Nome Tipo Descrizione
application.application Nette\Application\Application avviatore dell'intera applicazione
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory factory per i presenter
application.### Nette\Application\UI\Presenter singoli presenter
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory factory dell'oggetto Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory factory per $this->template
versione: 4.0