Configuración de aplicaciones

Resumen de las opciones de configuración para las aplicaciones Nette.

Application

application:
	# mostrar el panel "Nette Application" en Tracy BlueScreen?
	debugger: ...           # (bool) predeterminado es true

	# se llamará al error-presenter en caso de error?
	# solo tiene efecto en modo de desarrollo
	catchExceptions: ...    # (bool) predeterminado es true

	# nombre del error-presenter
	errorPresenter: Error   # (string|array) predeterminado es 'Nette:Error'

	# define alias para presenters y acciones
	aliases: ...

	# define reglas para traducir el nombre del presenter a una clase
	mapping: ...

	# los enlaces erróneos no generan advertencias?
	# solo tiene efecto en modo de desarrollo
	silentLinks: ...        # (bool) predeterminado es false

Desde la versión 3.2 de nette/application, se puede definir un par de error-presenters:

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

La opción silentLinks determina cómo se comporta Nette en modo de desarrollo cuando falla la generación de un enlace (por ejemplo, porque no existe el presenter, etc.). El valor predeterminado false significa que Nette lanzará un error E_USER_WARNING. Establecerlo en true suprimirá este mensaje de error. En el entorno de producción, siempre se lanza E_USER_WARNING. Este comportamiento también se puede influir estableciendo la variable del presenter $invalidLinkMode.

Los Alias simplifican el enlace a presenters de uso frecuente.

El Mapeo define reglas según las cuales se deriva el nombre de la clase a partir del nombre del presenter.

Registro automático de presenters

Nette agrega automáticamente los presenters como servicios al contenedor DI, lo que acelera significativamente su creación. Cómo Nette busca los presenters se puede configurar:

application:
	# buscar presenters en el mapa de clases de Composer?
	scanComposer: ...      # (bool) predeterminado es true

	# máscara que debe cumplir el nombre de la clase y el archivo
	scanFilter: ...        # (string) predeterminado es '*Presenter'

	# en qué directorios buscar presenters?
	scanDirs:              # (string[]|false) predeterminado es '%appDir%'
		- %vendorDir%/mymodule

Los directorios indicados en scanDirs no sobrescriben el valor predeterminado %appDir%, sino que lo complementan, por lo que scanDirs contendrá ambas rutas %appDir% y %vendorDir%/mymodule. Si quisiéramos omitir el directorio predeterminado, usaríamos un signo de exclamación, que sobrescribe el valor:

application:
	scanDirs!:
		- %vendorDir%/mymodule

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

Plantillas Latte

Con esta configuración, se puede influir globalmente en el comportamiento de Latte en componentes y presenters.

latte:
	# mostrar el panel Latte en Tracy Bar para la plantilla principal (true) o todos los componentes (all)?
	debugger: ...        # (true|false|'all') predeterminado es true

	# genera plantillas con la cabecera declare(strict_types=1)
	strictTypes: ...     # (bool) predeterminado es false

	# activa el modo de [parser estricto |latte:develop#striktní režim]
	strictParsing: ...   # (bool) predeterminado es false

	# activa la [verificación del código generado |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) predeterminado es null

	# establece la configuración regional
	locale: cs_CZ        # (string) predeterminado es null

	# clase del objeto $this->template
	templateClass: App\MyTemplateClass # predeterminado es Nette\Bridges\ApplicationLatte\DefaultTemplate

Si usa Latte versión 3, puede agregar nuevas extensiones usando:

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

Si usa Latte versión 2, puede registrar nuevas etiquetas (macros) ya sea indicando el nombre de la clase o una referencia al servicio. Por defecto, se llama al método install(), pero esto se puede cambiar indicando el nombre de otro método:

latte:
	# registro de etiquetas Latte personalizadas
	macros:
		- App\MyLatteMacros::register         # método estático, nombre de clase o callable
		- @App\MyLatteMacrosFactory           # servicio con método install()
		- @App\MyLatteMacrosFactory::register # servicio con método register()

services:
	- App\MyLatteMacrosFactory

Enrutamiento

Configuración básica:

routing:
	# mostrar el panel de enrutamiento en Tracy Bar?
	debugger: ...   # (bool) predeterminado es true

	# serializa el router en el contenedor DI
	cache: ...      # (bool) predeterminado es false

El enrutamiento generalmente lo definimos en la clase RouterFactory. Alternativamente, las rutas también se pueden definir en la configuración usando pares máscara: acción, pero este método no ofrece una variabilidad 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'

Después de iniciar la aplicación, se creará la constante Foobar.

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

PHP

Configuración de directivas PHP. Un resumen de todas las directivas se encuentra en php.net.

php:
	date.timezone: Europe/Prague

Servicios DI

Estos servicios se agregan al contenedor DI:

Nombre Tipo Descripción
application.application Nette\Application\Application ejecutor de toda la aplicación
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory fábrica de presenters
application.### Nette\Application\UI\Presenter presenters individuales
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory fábrica del objeto Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory fábrica para $this->template
versión: 4.0