Nette Documentation Preview

syntax
Configurazione dell'applicazione
********************************

.[perex]
Panoramica delle opzioni di configurazione dell'applicazione Nette.


Applicazione .[#toc-application]
================================

```neon
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: ...    # (bool) predefinito a true

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

	# definisce gli alias per i presentatori e gli eventi
	aliases: ...

	# 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
```

Dalla versione 3.2 di `nette/application` è possibile definire una coppia di presentatori di errori:

```neon
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 |creating-links#Invalid Links].

Gli [pseudonimi semplificano il riferimento ai |creating-links#aliases] presentatori utilizzati di frequente.

La [mappatura definisce le regole |modules#mapping] con cui il nome della classe viene derivato dal nome del presentatore.


Registrazione automatica dei presentatori .[#toc-automatic-registration-of-presenters]
--------------------------------------------------------------------------------------

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:

```neon
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 |dependency-injection:configuration#Merging]:

```neon
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 .[#toc-latte]
===================

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

```neon
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 |latte:creating-extension] utilizzando:

```neon
latte:
	extensions:
		- Latte\Essential\TranslatorExtension
```

/--comment











\--


Instradamento .[#toc-routing]
=============================

Impostazioni di base:

```neon
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 |routing#Route Collection]. In alternativa, i router possono essere definiti nella configurazione usando le coppie `mask: action`, ma questo metodo non offre un'ampia gamma di impostazioni:

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


Costanti .[#toc-constants]
==========================

Creare costanti PHP.

```neon
constants:
	Foobar: 'baz'
```

La costante `Foobar` viene creata dopo l'avvio.

.[note]
Le costanti non dovrebbero servire come variabili disponibili a livello globale. Per passare valori agli oggetti, usare l'[iniezione di dipendenza |dependency-injection:passing-dependencies].


PHP
===

È possibile impostare le direttive PHP. Una panoramica di tutte le direttive si trova su [php.net |https://www.php.net/manual/en/ini.list.php].

```neon
php:
	date.timezone: Europe/Prague
```


Servizi DI .[#toc-di-services]
==============================

Questi servizi vengono aggiunti al contenitore DI:

| Nome | Tipo | Descrizione
|----------------------------------------------------------
| `application.application` | [api:Nette\Application\Application] | [full application launcher |how-it-works#Nette Application]
| `application.linkGenerator` | [api:Nette\Application\LinkGenerator] | [LinkGenerator |creating-links#LinkGenerator]
| `application.presenterFactory` | [api:Nette\Application\PresenterFactory] | presenter factory
| `application.###` | [api:Nette\Application\UI\Presenter] | singoli presentatori
| `latte.latteFactory` | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | fabbrica per `Latte\Engine`
| `latte.templateFactory` | [api:Nette\Application\UI\TemplateFactory] | fabbrica per [`$this->template` |templates]

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: ...    # (bool) predefinito a true

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

	# definisce gli alias per i presentatori e gli eventi
	aliases: ...

	# 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

Dalla versione 3.2 di nette/application è 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.

Gli pseudonimi semplificano il riferimento ai presentatori utilizzati di frequente.

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