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 |