Configurazione dell'applicazione

Panoramica delle opzioni di configurazione dell'applicazione Nette.

Applicazione

application:
	# mostra il pannello "Applicazione Nette" in Tracy BlueScreen?
	debugger: ...           # (bool) predefinito a true

	# Il presentatore di errori sarà chiamato su un errore?
	# ha effetto solo in modalità sviluppatore
	catchExceptions: ...    # (true|false|4xx) predefinito a 4xx

	# nome del presentatore di errori
	errorPresenter: Error   # (string|array) predefinito a 'Nette:Error'.

	# definisce le regole per risolvere il nome del presentatore in una classe
	mapping: ...

	# I collegamenti errati generano avvisi?
	# ha effetto solo in modalità sviluppatore
	silentLinks: ...        # (bool) predefinito a false

A partire dalla versione 3.2 di nette/application, il valore predefinito di catchExceptions è 4xx, il che significa che il presentatore di errori viene utilizzato solo per le eccezioni di Nette\Application\BadRequestException che rappresentano errori HTTP 4xx. Inoltre, è possibile definire una coppia di presentatori di errori:

application:
	errorPresenter:
		4xx: Error4xx   # per NetteApplicationBadRequestException
		5xx: Error5xx   # per altre eccezioni

L'opzione silentLinks determina il comportamento di Nette in modalità sviluppatore quando la generazione dei collegamenti fallisce (ad esempio, perché non c'è un presentatore, ecc.). Il valore predefinito false significa che Nette attiva E_USER_WARNING. L'impostazione di true sopprime questo messaggio di errore. In un ambiente di produzione, E_USER_WARNING viene sempre invocato. Si può anche influenzare questo comportamento impostando la variabile del presentatore $invalidLinkMode.

La mappatura definisce le regole con cui il nome della classe viene derivato dal nome del presentatore.

Registrazione automatica dei presentatori

Nette aggiunge automaticamente i presentatori come servizi al contenitore DI, velocizzando notevolmente la loro creazione. Il modo in cui Nette trova i presentatori può essere configurato:

application:
	# per cercare i presentatori nella mappa delle classi di Composer?
	scanComposer: ...      # (bool) predefinito a true

	# una maschera che deve corrispondere alla classe e al nome del file
	scanFilter: ...        # (string) predefinito a '*Presenter'.

	# in quali directory cercare i presentatori?
	scanDirs:              # (string[]|false) predefinito a '%appDir%'.
		- %vendorDir%/mymodule

Le directory elencate in scanDirs non sovrascrivono il valore predefinito %appDir%, ma lo integrano, quindi scanDirs conterrà entrambi i percorsi %appDir% e %vendorDir%/mymodule. Se si vuole sovrascrivere la directory predefinita, si usa il punto esclamativo:

application:
	scanDirs!:
		- %vendorDir%/mymodule

La scansione delle directory può essere disattivata impostando false. Non si consiglia di sopprimere completamente l'aggiunta automatica dei presentatori, altrimenti le prestazioni dell'applicazione saranno ridotte.

Latte

Questa impostazione influenza globalmente il comportamento di Latte nei componenti e nei presentatori.

latte:
	# mostra il pannello Latte nella barra Tracy per il modello principale (true) o per tutti i componenti (all)?
	debugger: ...        # (true|false|'all') predefinito a true

	# genera modelli con declare(strict_types=1)
	strictTypes: ...     # (bool) predefinito a false

	# abilita la [modalità di parser rigoroso |latte:develop#strict mode]
	strictParsing: ...   # (bool) l'impostazione predefinita è false

	# abilita il [controllo del codice generato |latte:develop#Checking Generated Code]
	phpLinter: ...       # (stringa) il valore predefinito è null

	# classe di $this->template
	templateClass: App\MyTemplateClass # predefinita a Nette\Bridges\ApplicationLatte\DefaultTemplate

Se si utilizza la versione 3 di Latte, è possibile aggiungere nuove estensioni utilizzando:

latte:
	extensions:
		- Latte\Essential\TranslatorExtension

Instradamento

Impostazioni di base:

routing:
	# mostra il pannello di instradamento nella barra Tracy?
	debugger: ...   # (bool) predefinito a true

	# per serializzare il router nel contenitore DI?
	cache: ...      # (bool) predefinito a false

Il router è solitamente definito nella classe RouterFactory. In alternativa, i router possono essere definiti nella configurazione usando le coppie mask: action, ma questo metodo non offre un'ampia gamma di impostazioni:

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

Costanti

Creare costanti PHP.

constants:
	Foobar: 'baz'

La costante Foobar viene creata dopo l'avvio.

Le costanti non dovrebbero servire come variabili disponibili a livello globale. Per passare valori agli oggetti, usare l'iniezione di dipendenza.

PHP

È possibile impostare le direttive PHP. Una panoramica di tutte le direttive si trova su php.net.

php:
	date.timezone: Europe/Prague

Servizi DI

Questi servizi vengono aggiunti al contenitore DI:

Nome Tipo Descrizione
application.application Nette\Application\Application full application launcher
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory presenter factory
application.### Nette\Application\UI\Presenter singoli presentatori
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory fabbrica per Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory fabbrica per $this->template
versione: 4.0