Configuração de aplicações

Visão geral das opções de configuração para Aplicações Nette.

Application

application:
	# exibir o painel "Nette Application" no Tracy BlueScreen?
	debugger: ...           # (bool) padrão é true

	# o error-presenter será chamado em caso de erro?
	# tem efeito apenas no modo de desenvolvimento
	catchExceptions: ...    # (bool) padrão é true

	# nome do error-presenter
	errorPresenter: Error   # (string|array) padrão é 'Nette:Error'

	# define aliases para presenters e ações
	aliases: ...

	# define regras para traduzir o nome do presenter para a classe
	mapping: ...

	# links inválidos não geram avisos?
	# tem efeito apenas no modo de desenvolvimento
	silentLinks: ...        # (bool) padrão é false

A partir da versão nette/application 3.2, é possível definir um par de error-presenters:

application:
	errorPresenter:
		4xx: Error4xx   # para a exceção Nette\Application\BadRequestException
		5xx: Error5xx   # para outras exceções

A opção silentLinks determina como o Nette se comporta no modo de desenvolvimento quando a geração de um link falha (por exemplo, porque o presenter não existe, etc.). O valor padrão false significa que o Nette lançará um erro E_USER_WARNING. Definir como true suprimirá esta mensagem de erro. No ambiente de produção, E_USER_WARNING é sempre lançado. Este comportamento também pode ser influenciado definindo a variável do presenter $invalidLinkMode.

Aliases simplificam a vinculação a presenters frequentemente usados.

Mapeamento define regras, segundo as quais o nome da classe é derivado do nome do presenter.

Registro automático de presenters

O Nette adiciona automaticamente presenters como serviços ao contêiner de DI, o que acelera significativamente sua criação. Como o Nette localiza os presenters pode ser configurado:

application:
	# procurar presenters no mapa de classes do Composer?
	scanComposer: ...      # (bool) padrão é true

	# máscara que o nome da classe e do arquivo deve corresponder
	scanFilter: ...        # (string) padrão é '*Presenter'

	# em quais diretórios procurar presenters?
	scanDirs:              # (string[]|false) padrão é '%appDir%'
		- %vendorDir%/mymodule

Os diretórios listados em scanDirs não sobrescrevem o valor padrão %appDir%, mas o complementam, então scanDirs conterá ambos os caminhos %appDir% e %vendorDir%/mymodule. Se quisermos omitir o diretório padrão, usamos um ponto de exclamação, que sobrescreve o valor:

application:
	scanDirs!:
		- %vendorDir%/mymodule

A varredura de diretórios pode ser desativada especificando o valor false. Não recomendamos suprimir completamente a adição automática de presenters, pois isso resultará em uma redução no desempenho da aplicação.

Templates Latte

Com esta configuração, o comportamento do Latte em componentes e presenters pode ser influenciado globalmente.

latte:
	# exibir o painel Latte na Barra Tracy para o template principal (true) ou todos os componentes (all)?
	debugger: ...        # (true|false|'all') padrão é true

	# gera templates com o cabeçalho declare(strict_types=1)
	strictTypes: ...     # (bool) padrão é false

	# ativa o modo de [parser estrito |latte:develop#striktní režim]
	strictParsing: ...   # (bool) padrão é false

	# ativa a [verificação do código gerado |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) padrão é null

	# define a localidade
	locale: pt_BR        # (string) padrão é null

	# classe do objeto $this->template
	templateClass: App\MyTemplateClass # padrão é Nette\Bridges\ApplicationLatte\DefaultTemplate

Se você estiver usando Latte versão 3, pode adicionar novas extensões usando:

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

Se você estiver usando Latte versão 2, pode registrar novas tags especificando o nome da classe ou uma referência a um serviço. Por padrão, o método install() é chamado, mas isso pode ser alterado especificando o nome de outro método:

latte:
	# registro de tags Latte personalizadas
	macros:
		- App\MyLatteMacros::register         # método estático, nome da classe ou callable
		- @App\MyLatteMacrosFactory           # serviço com método install()
		- @App\MyLatteMacrosFactory::register # serviço com método register()

services:
	- App\MyLatteMacrosFactory

Roteamento

Configurações básicas:

routing:
	# exibir o painel de roteamento na Barra Tracy?
	debugger: ...   # (bool) padrão é true

	# serializa o roteador no contêiner DI
	cache: ...      # (bool) padrão é false

O roteamento geralmente é definido na classe RouterFactory. Alternativamente, as rotas também podem ser definidas na configuração usando pares máscara: ação, mas este método não oferece tanta variabilidade nas configurações:

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

Constantes

Criação de constantes PHP.

constants:
	Foobar: 'baz'

Após iniciar a aplicação, a constante Foobar será criada.

Constantes não devem servir como variáveis globalmente disponíveis. Para passar valores para objetos, use injeção de dependência.

PHP

Configuração de diretivas PHP. Uma visão geral de todas as diretivas pode ser encontrada em php.net.

php:
	date.timezone: Europe/Lisbon

Serviços DI

Estes serviços são adicionados ao contêiner de DI:

Nome Tipo Descrição
application.application Nette\Application\Application iniciador de toda a aplicação
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory fábrica de presenters
application.### Nette\Application\UI\Presenter presenters individuais
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory fábrica do objeto Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory fábrica para $this->template
versão: 4.0