Nette Documentation Preview

syntax
Configuración de la aplicación
******************************

.[perex]
Visión general de las opciones de configuración de la Aplicación Nette.


Aplicación .[#toc-application]
==============================

```neon
application:
	# muestra el panel "Nette Application" en Tracy BlueScreen?
	debugger: ...           # (bool) por defecto true

	# ¿se llamará al presentador de errores en caso de error?
	# sólo tiene efecto en modo desarrollador
	catchExceptions: ...    # (bool) por defecto true

	# nombre del presentador de errores
	errorPresenter: Error   # (string|array) por defecto 'Nette:Error'

	# define alias para presentadores y eventos
	aliases: ...

	# define las reglas para resolver el nombre del presentador a una clase
	mapping: ...

	# ¿los enlaces erróneos generan advertencias?
	# sólo tiene efecto en modo desarrollador
	silentLinks: ...        # (bool) por defecto false
```

A partir de la versión 3.2 de `nette/application` es posible definir un par de presentadores de errores:

```neon
application:
	errorPresenter:
		4xx: Error4xx   # para Nette\Application\BadRequestException
		5xx: Error5xx   # para otras excepciones
```

La opción `silentLinks` determina cómo se comporta Nette en modo desarrollo cuando falla la generación de enlaces (por ejemplo, porque no hay presentador, etc). El valor por defecto `false` significa que Nette activa `E_USER_WARNING`. El valor `true` suprime este mensaje de error. En un entorno de producción, siempre se invoca `E_USER_WARNING`. También podemos influir en este comportamiento configurando la variable del presentador [$invalidLinkMode |creating-links#Invalid Links].

[Los alias simplifican las referencias a |creating-links#aliases] los presentadores más utilizados.

El [mapeo define las reglas |modules#mapping] por las cuales el nombre de la clase se deriva del nombre del presentador.


Registro automático de presentadores .[#toc-automatic-registration-of-presenters]
---------------------------------------------------------------------------------

Nette añade automáticamente presentadores como servicios al contenedor DI, lo que acelera significativamente su creación. La forma en que Nette descubre a los presentadores puede configurarse:

```neon
application:
	# ¿buscar presentadores en el mapa de clases de Composer?
	scanComposer: ...      # (bool) por defecto a true

	# una máscara que debe coincidir con la clase y el nombre del archivo
	scanFilter: ...        # (string) por defecto '*Presenter'

	# ¿en qué directorios buscar los presentadores?
	scanDirs:              # (string[]|false) por defecto '%appDir%'
		- %vendorDir%/mymodule
```

Los directorios listados en `scanDirs` no sobreescriben el valor por defecto `%appDir%`, sino que lo complementan, así `scanDirs` contendrá ambas rutas `%appDir%` y `%vendorDir%/mymodule`. Si queremos sobreescribir el directorio por defecto, usamos el [signo de exclamación |dependency-injection:configuration#Merging]:

```neon
application:
	scanDirs!:
		- %vendorDir%/mymodule
```

El escaneo de directorios puede desactivarse configurando false. No recomendamos suprimir por completo la adición automática de presentadores, ya que de lo contrario se reducirá el rendimiento de la aplicación.


Latte .[#toc-latte]
===================

Esta configuración afecta globalmente al comportamiento de Latte en componentes y presentadores.

```neon
latte:
	# ¿muestra el panel Latte en la Tracy Bar para la plantilla principal (true) o para todos los componentes (all)?
	debugger: ...        # (true|false|'all') por defecto true

	# genera plantillas con declare(strict_types=1)
	strictTypes: ...     # (bool) por defecto false

	# activa el [modo de análisis sintáctico estric |latte:develop#strict mode]to
	strictParsing: ...   # (bool) por defecto es false

	# habilita la [comprobación del código generado |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) por defecto es null

	# clase de $this->plantilla
	templateClass: App\MyTemplateClass # por defecto Nette\Bridges\ApplicationLatte\DefaultTemplate
```

Si está utilizando la versión 3 de Latte, puede añadir una nueva [extensión |latte:creating-extension] utilizando:

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

/--comment











\--


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

Configuración básica:

```neon
routing:
	# ¿muestra el panel de enrutamiento en Tracy Bar?
	debugger: ...   # (bool) por defecto a true

	# serializar enrutador a contenedor DI?
	cache: ...      # (bool) por defecto false
```

El enrutador se define normalmente en la clase [RouterFactory |routing#Route Collection]. Alternativamente, los enrutadores también se pueden definir en la configuración utilizando pares `mask: action`, pero este método no ofrece una variación tan amplia en la configuración:

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


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

Creación de constantes PHP.

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

La constante `Foobar` se creará después del arranque.

.[note]
Las constantes no deben servir como variables disponibles globalmente. Para pasar valores a objetos, utilice [la inyección de dependencia |dependency-injection:passing-dependencies].


PHP
===

Puede establecer directivas PHP. Una visión general de todas las directivas se puede encontrar en [php.net |https://www.php.net/manual/en/ini.list.php].

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


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

Estos servicios se añaden al contenedor DI:

| Nombre | Tipo | Descripción
|----------------------------------------------------------
| `application.application` | [api:Nette\Application\Application] | [Lanzador de aplicaciones completo |how-it-works#Nette Application]
| `application.linkGenerator` | [api:Nette\Application\LinkGenerator] | [Generador de enlaces |creating-links#LinkGenerator]
| `application.presenterFactory` | [api:Nette\Application\PresenterFactory] | fábrica de presentadores
| `application.###` | [api:Nette\Application\UI\Presenter] | presentadores individuales
| `latte.latteFactory` | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | fábrica para `Latte\Engine`
| `latte.templateFactory` | [api:Nette\Application\UI\TemplateFactory] | fábrica para [`$this->template` |templates]

Configuración de la aplicación

Visión general de las opciones de configuración de la Aplicación Nette.

Aplicación

application:
	# muestra el panel "Nette Application" en Tracy BlueScreen?
	debugger: ...           # (bool) por defecto true

	# ¿se llamará al presentador de errores en caso de error?
	# sólo tiene efecto en modo desarrollador
	catchExceptions: ...    # (bool) por defecto true

	# nombre del presentador de errores
	errorPresenter: Error   # (string|array) por defecto 'Nette:Error'

	# define alias para presentadores y eventos
	aliases: ...

	# define las reglas para resolver el nombre del presentador a una clase
	mapping: ...

	# ¿los enlaces erróneos generan advertencias?
	# sólo tiene efecto en modo desarrollador
	silentLinks: ...        # (bool) por defecto false

A partir de la versión 3.2 de nette/application es posible definir un par de presentadores de errores:

application:
	errorPresenter:
		4xx: Error4xx   # para Nette\Application\BadRequestException
		5xx: Error5xx   # para otras excepciones

La opción silentLinks determina cómo se comporta Nette en modo desarrollo cuando falla la generación de enlaces (por ejemplo, porque no hay presentador, etc). El valor por defecto false significa que Nette activa E_USER_WARNING. El valor true suprime este mensaje de error. En un entorno de producción, siempre se invoca E_USER_WARNING. También podemos influir en este comportamiento configurando la variable del presentador $invalidLinkMode.

Los alias simplifican las referencias a los presentadores más utilizados.

El mapeo define las reglas por las cuales el nombre de la clase se deriva del nombre del presentador.

Registro automático de presentadores

Nette añade automáticamente presentadores como servicios al contenedor DI, lo que acelera significativamente su creación. La forma en que Nette descubre a los presentadores puede configurarse:

application:
	# ¿buscar presentadores en el mapa de clases de Composer?
	scanComposer: ...      # (bool) por defecto a true

	# una máscara que debe coincidir con la clase y el nombre del archivo
	scanFilter: ...        # (string) por defecto '*Presenter'

	# ¿en qué directorios buscar los presentadores?
	scanDirs:              # (string[]|false) por defecto '%appDir%'
		- %vendorDir%/mymodule

Los directorios listados en scanDirs no sobreescriben el valor por defecto %appDir%, sino que lo complementan, así scanDirs contendrá ambas rutas %appDir% y %vendorDir%/mymodule. Si queremos sobreescribir el directorio por defecto, usamos el signo de exclamación:

application:
	scanDirs!:
		- %vendorDir%/mymodule

El escaneo de directorios puede desactivarse configurando false. No recomendamos suprimir por completo la adición automática de presentadores, ya que de lo contrario se reducirá el rendimiento de la aplicación.

Latte

Esta configuración afecta globalmente al comportamiento de Latte en componentes y presentadores.

latte:
	# ¿muestra el panel Latte en la Tracy Bar para la plantilla principal (true) o para todos los componentes (all)?
	debugger: ...        # (true|false|'all') por defecto true

	# genera plantillas con declare(strict_types=1)
	strictTypes: ...     # (bool) por defecto false

	# activa el [modo de análisis sintáctico estric |latte:develop#strict mode]to
	strictParsing: ...   # (bool) por defecto es false

	# habilita la [comprobación del código generado |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) por defecto es null

	# clase de $this->plantilla
	templateClass: App\MyTemplateClass # por defecto Nette\Bridges\ApplicationLatte\DefaultTemplate

Si está utilizando la versión 3 de Latte, puede añadir una nueva extensión utilizando:

latte:
	extensions:
		- Latte\Essential\TranslatorExtension

Enrutamiento

Configuración básica:

routing:
	# ¿muestra el panel de enrutamiento en Tracy Bar?
	debugger: ...   # (bool) por defecto a true

	# serializar enrutador a contenedor DI?
	cache: ...      # (bool) por defecto false

El enrutador se define normalmente en la clase RouterFactory. Alternativamente, los enrutadores también se pueden definir en la configuración utilizando pares mask: action, pero este método no ofrece una variación tan amplia en la configuración:

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

Constantes

Creación de constantes PHP.

constants:
	Foobar: 'baz'

La constante Foobar se creará después del arranque.

Las constantes no deben servir como variables disponibles globalmente. Para pasar valores a objetos, utilice la inyección de dependencia.

PHP

Puede establecer directivas PHP. Una visión general de todas las directivas se puede encontrar en php.net.

php:
	date.timezone: Europe/Prague

Servicios DI

Estos servicios se añaden al contenedor DI:

Nombre Tipo Descripción
application.application Nette\Application\Application Lanzador de aplicaciones completo
application.linkGenerator Nette\Application\LinkGenerator Generador de enlaces
application.presenterFactory Nette\Application\PresenterFactory fábrica de presentadores
application.### Nette\Application\UI\Presenter presentadores individuales
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory fábrica para Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory fábrica para $this->template