Nette Documentation Preview

syntax
Konfiguriranje aplikacije
*************************

.[perex]
Pregled možnosti konfiguracije za aplikacijo Nette.


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

```neon
application:
	# prikazuje ploščo "Nette Application" v programu Tracy BlueScreen?
	debugger: ...           # (bool) privzeto je true

	# se bo ob napaki poklical predstavnik napak?
	# učinkuje samo v načinu za razvijalce
	catchExceptions: ...    # (bool) privzeto true

	# ime programa error-presenter
	errorPresenter: Error   # (string|array) privzeto 'Nette:Error'

	# določa vzdevke za voditelje in dogodke
	aliases: ...

	# določa pravila za razrešitev imena predstavnika na razred
	mapping: ...

	# ali slabe povezave ustvarjajo opozorila?
	# učinkuje samo v načinu za razvijalce
	silentLinks: ...        # (bool) privzeto je false
```

Od različice `nette/application` 3.2 je mogoče določiti par predstavnikov napak:

```neon
application:
	errorPresenter:
		4xx: Error4xx   # za Nette\Application\BadRequestException
		5xx: Error5xx   # za druge izjeme
```

Možnost `silentLinks` določa, kako se Nette obnaša v razvojnem načinu, ko generiranje povezav ne uspe (na primer ker ni predstavnika itd.). Privzeta vrednost `false` pomeni, da Nette sproži `E_USER_WARNING`. Nastavitev na `true` to sporočilo o napaki odpravi. V produkcijskem okolju se vedno sproži `E_USER_WARNING`. Na to obnašanje lahko vplivamo tudi z nastavitvijo spremenljivke presenterja [$invalidLinkMode |creating-links#Invalid Links].

[Psevdonimi poenostavijo sklicevanje na |creating-links#aliases] pogosto uporabljene predstavnike.

 [Prikazovanje določa pravila, |modules#mapping] po katerih se ime razreda izpelje iz imena predstavnika.


Samodejna registracija predavateljev .[#toc-automatic-registration-of-presenters]
---------------------------------------------------------------------------------

Nette samodejno doda predstavnike kot storitve v vsebnik DI, kar znatno pospeši njihovo ustvarjanje. Kako Nette najde predstavnike, lahko nastavite:

```neon
application:
	# za iskanje predavateljev na zemljevidu razredov programa Composer?
	scanComposer: ...      # (bool) privzeto true

	# maska, ki se mora ujemati z imenom razreda in datoteke
	scanFilter: ...        # (string) privzeto '*Presenter'

	# v katerih imenikih iskati predstavnike?
	scanDirs:              # (string[]|false) privzeto '%appDir%'
		- %vendorDir%/mymodule
```

Imeniki, navedeni v `scanDirs`, ne nadomeščajo privzete vrednosti `%appDir%`, temveč jo dopolnjujejo, tako da bo `scanDirs` vseboval poti `%appDir%` in `%vendorDir%/mymodule`. Če želimo prepisati privzeti imenik, uporabimo [izklicaj |dependency-injection:configuration#Merging]:

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

Pregledovanje imenikov lahko izklopimo z nastavitvijo false. Ne priporočamo popolne ukinitve samodejnega dodajanja predstavnikov, sicer se bo zmanjšalo delovanje aplikacije.


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

Ta nastavitev globalno vpliva na obnašanje programa Latte v komponentah in predstavitvah.

```neon
latte:
	# prikaže ploščo Latte v Tracy Baru za glavno predlogo (true) ali za vse komponente (all)?
	debugger: ...        # (true|false|'all') privzeto je true

	# generira predloge z declare(strict_types=1)
	strictTypes: ...     # (bool) privzeto je false

	# omogoči [strogi način pregledovalnika |latte:develop#strict mode]
	strictParsing: ...   # (bool) privzeto je false

	# omogoča [preverjanje ustvarjene kode |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) privzeto je null

	# nastavi krajevni jezik
	locale: cs_CZ        # (string) privzeto je nič

	# razred $this->template
	templateClass: App\MyTemplateClass # privzeto je Nette\Bridges\ApplicationLatte\DefaultTemplate
```

Če uporabljate različico Latte 3, lahko novo [razširitev |latte:creating-extension] dodate z uporabo:

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

/--comment











\--


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

Osnovne nastavitve:

```neon
routing:
	# prikazuje usmerjevalno ploščo v vrstici Tracy Bar?
	debugger: ...   # (bool) privzeto je true

	# serializirati usmerjevalnik v vsebnik DI?
	cache: ...      # (bool) privzeto false
```

Usmerjevalnik je običajno definiran v razredu [RouterFactory |routing#Route Collection]. Alternativno lahko usmerjevalnike določimo tudi v konfiguraciji z uporabo parov `mask: action`, vendar ta način ne ponuja tako široke variabilnosti nastavitev:

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


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

Ustvarjanje konstant PHP.

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

Konstanta `Foobar` bo ustvarjena po zagonu.

.[note]
Konstante ne smejo služiti kot globalno dostopne spremenljivke. Za posredovanje vrednosti objektom uporabite [vbrizgavanje odvisnosti |dependency-injection:passing-dependencies].


PHP
===

Nastavite lahko direktive PHP. Pregled vseh direktiv je na voljo na [php.net |https://www.php.net/manual/en/ini.list.php].

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


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

Te storitve so dodane vsebniku DI:

| Ime | Vrsta | Opis
|----------------------------------------------------------
| `application.application` | [api:Nette\Application\Application] | [zaganjalnik celotne aplikacije |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] | posamezni predavatelji
| `latte.latteFactory` | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | tovarna za `Latte\Engine`
| `latte.templateFactory` | [api:Nette\Application\UI\TemplateFactory] | tovarna za [`$this->template` |templates]

Konfiguriranje aplikacije

Pregled možnosti konfiguracije za aplikacijo Nette.

Aplikacija

application:
	# prikazuje ploščo "Nette Application" v programu Tracy BlueScreen?
	debugger: ...           # (bool) privzeto je true

	# se bo ob napaki poklical predstavnik napak?
	# učinkuje samo v načinu za razvijalce
	catchExceptions: ...    # (bool) privzeto true

	# ime programa error-presenter
	errorPresenter: Error   # (string|array) privzeto 'Nette:Error'

	# določa vzdevke za voditelje in dogodke
	aliases: ...

	# določa pravila za razrešitev imena predstavnika na razred
	mapping: ...

	# ali slabe povezave ustvarjajo opozorila?
	# učinkuje samo v načinu za razvijalce
	silentLinks: ...        # (bool) privzeto je false

Od različice nette/application 3.2 je mogoče določiti par predstavnikov napak:

application:
	errorPresenter:
		4xx: Error4xx   # za Nette\Application\BadRequestException
		5xx: Error5xx   # za druge izjeme

Možnost silentLinks določa, kako se Nette obnaša v razvojnem načinu, ko generiranje povezav ne uspe (na primer ker ni predstavnika itd.). Privzeta vrednost false pomeni, da Nette sproži E_USER_WARNING. Nastavitev na true to sporočilo o napaki odpravi. V produkcijskem okolju se vedno sproži E_USER_WARNING. Na to obnašanje lahko vplivamo tudi z nastavitvijo spremenljivke presenterja $invalidLinkMode.

Psevdonimi poenostavijo sklicevanje na pogosto uporabljene predstavnike.

Prikazovanje določa pravila, po katerih se ime razreda izpelje iz imena predstavnika.

Samodejna registracija predavateljev

Nette samodejno doda predstavnike kot storitve v vsebnik DI, kar znatno pospeši njihovo ustvarjanje. Kako Nette najde predstavnike, lahko nastavite:

application:
	# za iskanje predavateljev na zemljevidu razredov programa Composer?
	scanComposer: ...      # (bool) privzeto true

	# maska, ki se mora ujemati z imenom razreda in datoteke
	scanFilter: ...        # (string) privzeto '*Presenter'

	# v katerih imenikih iskati predstavnike?
	scanDirs:              # (string[]|false) privzeto '%appDir%'
		- %vendorDir%/mymodule

Imeniki, navedeni v scanDirs, ne nadomeščajo privzete vrednosti %appDir%, temveč jo dopolnjujejo, tako da bo scanDirs vseboval poti %appDir% in %vendorDir%/mymodule. Če želimo prepisati privzeti imenik, uporabimo izklicaj:

application:
	scanDirs!:
		- %vendorDir%/mymodule

Pregledovanje imenikov lahko izklopimo z nastavitvijo false. Ne priporočamo popolne ukinitve samodejnega dodajanja predstavnikov, sicer se bo zmanjšalo delovanje aplikacije.

Latte

Ta nastavitev globalno vpliva na obnašanje programa Latte v komponentah in predstavitvah.

latte:
	# prikaže ploščo Latte v Tracy Baru za glavno predlogo (true) ali za vse komponente (all)?
	debugger: ...        # (true|false|'all') privzeto je true

	# generira predloge z declare(strict_types=1)
	strictTypes: ...     # (bool) privzeto je false

	# omogoči [strogi način pregledovalnika |latte:develop#strict mode]
	strictParsing: ...   # (bool) privzeto je false

	# omogoča [preverjanje ustvarjene kode |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) privzeto je null

	# nastavi krajevni jezik
	locale: cs_CZ        # (string) privzeto je nič

	# razred $this->template
	templateClass: App\MyTemplateClass # privzeto je Nette\Bridges\ApplicationLatte\DefaultTemplate

Če uporabljate različico Latte 3, lahko novo razširitev dodate z uporabo:

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

Usmerjanje

Osnovne nastavitve:

routing:
	# prikazuje usmerjevalno ploščo v vrstici Tracy Bar?
	debugger: ...   # (bool) privzeto je true

	# serializirati usmerjevalnik v vsebnik DI?
	cache: ...      # (bool) privzeto false

Usmerjevalnik je običajno definiran v razredu RouterFactory. Alternativno lahko usmerjevalnike določimo tudi v konfiguraciji z uporabo parov mask: action, vendar ta način ne ponuja tako široke variabilnosti nastavitev:

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

Konstante

Ustvarjanje konstant PHP.

constants:
	Foobar: 'baz'

Konstanta Foobar bo ustvarjena po zagonu.

Konstante ne smejo služiti kot globalno dostopne spremenljivke. Za posredovanje vrednosti objektom uporabite vbrizgavanje odvisnosti.

PHP

Nastavite lahko direktive PHP. Pregled vseh direktiv je na voljo na php.net.

php:
	date.timezone: Europe/Prague

Storitve DI

Te storitve so dodane vsebniku DI:

Ime Vrsta Opis
application.application Nette\Application\Application zaganjalnik celotne aplikacije
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory presenter factory
application.### Nette\Application\UI\Presenter posamezni predavatelji
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory tovarna za Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory tovarna za $this->template