Nette Documentation Preview

syntax
Konfiguracja aplikacji
**********************

.[perex]
Przegląd opcji konfiguracyjnych dla Nette Applications.


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

```neon
application:
	# pokazać panel "Nette Application" w Tracy BlueScreen?
	debugger: ...           # (bool) domyślnie jest true

	# czy error-presenter będzie wywoływany przy błędzie?
	# działa tylko w trybie deweloperskim
	catchExceptions: ...    # (bool) domyślnie true

	# error-presenter name
	errorPresenter: Error   # (string|array) domyślnie 'Nette:Error'

	# definiuje aliasy dla prezenterów i wydarzeń
	aliases: ...

	# definiuje zasady rozwiązywania nazwy prezentera do klasy
	mapping: ...

	# błędne linki nie generują ostrzeżenia?
	# działa tylko w trybie deweloperskim
	silentLinks: ...        # (bool) domyślnie jest false
```

Od wersji `nette/application` 3.2 możliwe jest zdefiniowanie pary prezenterów błędów:

```neon
application:
	errorPresenter:
		4xx: Error4xx   # dla wyjątku Nette\Application\BadRequestException
		5xx: Error5xx   # dla innych wyjątków
```

Opcja `silentLinks` określa, jak Nette zachowuje się w trybie rozwoju, gdy generowanie linków nie powiedzie się (np. z powodu braku prezentera itp.). Domyślna wartość `false` oznacza, że Nette rzuci błąd `E_USER_WARNING`. Ustawienie go na `true` spowoduje wyeliminowanie tego komunikatu o błędzie. W środowisku produkcyjnym, `E_USER_WARNING` jest zawsze podniesiony. Na to zachowanie można również wpłynąć poprzez ustawienie zmiennej prezentera [$invalidLinkMode |creating-links#Invalid-Links].

[Aliasy ułatwiają odwoływanie się do |creating-links#aliases] często używanych prezenterów.

[Odwzorowanie określa zasady |modules#Mapping], według których nazwa klasy jest wyprowadzana z nazwy prezentera.


Automatyczna rejestracja prezenterów .[#toc-automatic-registration-of-presenters]
---------------------------------------------------------------------------------

Nette automatycznie dodaje prezentery jako usługi do kontenera DI, co radykalnie przyspieszy ich tworzenie. Sposób śledzenia prezenterów przez Nette można skonfigurować:

```neon
zastosowanie:
	# search presentery in Composer class map?
	scanComposer: ...      # (bool) domyślnie jest true

	# maska, która musi pasować do nazwy klasy i pliku
	scanFilter: ...        # (string) domyślnie '*Prezenter'

	# w jakich katalogach szukać prezenterów?
	scanDirs:              # (string[]|false) domyślnie '%appDir%'
		- %vendorDir%/mymoduł
```

Katalogi wymienione w `scanDirs` nie nadpisują domyślnej wartości `%appDir%`, ale dodają do niej, więc `scanDirs` będzie zawierał zarówno ścieżki `%appDir%` jak i `%vendorDir%/mymodule`. Jeśli chcielibyśmy pominąć domyślny katalog, używamy [wykrzyknika |dependency-injection:configuration#merging], aby nadpisać wartość:

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

Skanowanie katalogów można wyłączyć podając wartość false. Nie zaleca się całkowitego wyłączenia automatycznego dodawania prezenterów, w przeciwnym razie wydajność aplikacji ulegnie pogorszeniu.


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

To ustawienie może być używane do globalnego wpływania na zachowanie Latte w komponentach i prezenterach.

```neon
latte:
	# show Latte bar in Tracy Bar for main template (true) or all components (all)?
	debugger: ...        # (true|false|'all') domyślnie jest true

	# generowanie szablonów z nagłówkami declare(strict_types=1)
	strictTypes: ...     # (bool) domyślnie jest false

	# włącza [ścisły tryb parsera |latte:develop#strict mode]
	strictParsing: ...   # (bool) domyślnie false

	# włącza [sprawdzanie wygenerowanego kodu |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) domyślnie null

	# klasa obiektów $this->template
	templateClass: AppMyTemplateClass # domyślnie jest Nette\Bridges\ApplicationLatte\DefaultTemplate
```

Jeśli używasz Latte w wersji 3, możesz dodać nowe [rozszerzenia |latte:creating-extension] za pomocą:

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

/--comment











\--


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

Ustawienia podstawowe:

```neon
routing:
	# show routing bar in Tracy Bar?
	debugger: ...   # (bool) domyślnie jest true

	# serializuje router do kontenera DI
	cache: ...      # (bool) domyślnie jest false
```

Routing jest zwykle definiowany w klasie [RouterFactory |routing#Route-Collection]. Alternatywnie, routery mogą być również zdefiniowane w konfiguracji przy użyciu par `maska: akce`, ale ta metoda nie oferuje tak szerokiego spektrum ustawień:

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


Stałe .[#toc-constants]
=======================

Tworzenie stałych PHP.

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

Po uruchomieniu aplikacji zostanie utworzona stała `Foobar`.

.[note]
Stałe nie powinny być używane jako zmienne dostępne globalnie. Użyj [zastrzyku zależności |dependency-injection:passing-dependencies], aby przekazać wartości do obiektów.


PHP
===

Ustawianie dyrektyw PHP. Przegląd wszystkich dyrektyw można znaleźć na stronie [php.net |https://www.php.net/manual/en/ini.list.php].

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


Usługi DI .[#toc-di-services]
=============================

Usługi te są dodawane do kontenera DI:

| Nazwa | Typ | Opis
|----------------------------------------------------------
| `application.application` | [api:Nette\Application\Application] | [pełny program uruchamiający aplikacje |how-it-works#Nette Application]
| `application.linkGenerator` | [api:Nette\Application\LinkGenerator] | [LinkGenerator |creating-links#LinkGenerator]
| `application.presenterFactory` | [api:Nette\Application\PresenterFactory] | fabryka prezenterów
| `application.###` | [api:Nette\Application\UI\Presenter] | indywidualni prezenterzy
| `latte.latteFactory` | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | fabryka dla `Latte\Engine`
| `latte.templateFactory` | [api:Nette\Application\UI\TemplateFactory] | fabryka dla [`$this->template` |templates]

Konfiguracja aplikacji

Przegląd opcji konfiguracyjnych dla Nette Applications.

Aplikacja

application:
	# pokazać panel "Nette Application" w Tracy BlueScreen?
	debugger: ...           # (bool) domyślnie jest true

	# czy error-presenter będzie wywoływany przy błędzie?
	# działa tylko w trybie deweloperskim
	catchExceptions: ...    # (bool) domyślnie true

	# error-presenter name
	errorPresenter: Error   # (string|array) domyślnie 'Nette:Error'

	# definiuje aliasy dla prezenterów i wydarzeń
	aliases: ...

	# definiuje zasady rozwiązywania nazwy prezentera do klasy
	mapping: ...

	# błędne linki nie generują ostrzeżenia?
	# działa tylko w trybie deweloperskim
	silentLinks: ...        # (bool) domyślnie jest false

Od wersji nette/application 3.2 możliwe jest zdefiniowanie pary prezenterów błędów:

application:
	errorPresenter:
		4xx: Error4xx   # dla wyjątku Nette\Application\BadRequestException
		5xx: Error5xx   # dla innych wyjątków

Opcja silentLinks określa, jak Nette zachowuje się w trybie rozwoju, gdy generowanie linków nie powiedzie się (np. z powodu braku prezentera itp.). Domyślna wartość false oznacza, że Nette rzuci błąd E_USER_WARNING. Ustawienie go na true spowoduje wyeliminowanie tego komunikatu o błędzie. W środowisku produkcyjnym, E_USER_WARNING jest zawsze podniesiony. Na to zachowanie można również wpłynąć poprzez ustawienie zmiennej prezentera $invalidLinkMode.

Aliasy ułatwiają odwoływanie się do często używanych prezenterów.

Odwzorowanie określa zasady, według których nazwa klasy jest wyprowadzana z nazwy prezentera.

Automatyczna rejestracja prezenterów

Nette automatycznie dodaje prezentery jako usługi do kontenera DI, co radykalnie przyspieszy ich tworzenie. Sposób śledzenia prezenterów przez Nette można skonfigurować:

zastosowanie:
	# search presentery in Composer class map?
	scanComposer: ...      # (bool) domyślnie jest true

	# maska, która musi pasować do nazwy klasy i pliku
	scanFilter: ...        # (string) domyślnie '*Prezenter'

	# w jakich katalogach szukać prezenterów?
	scanDirs:              # (string[]|false) domyślnie '%appDir%'
		- %vendorDir%/mymoduł

Katalogi wymienione w scanDirs nie nadpisują domyślnej wartości %appDir%, ale dodają do niej, więc scanDirs będzie zawierał zarówno ścieżki %appDir% jak i %vendorDir%/mymodule. Jeśli chcielibyśmy pominąć domyślny katalog, używamy wykrzyknika, aby nadpisać wartość:

application:
	scanDirs!:
		- %vendorDir%/mymodule

Skanowanie katalogów można wyłączyć podając wartość false. Nie zaleca się całkowitego wyłączenia automatycznego dodawania prezenterów, w przeciwnym razie wydajność aplikacji ulegnie pogorszeniu.

Szablony Latte

To ustawienie może być używane do globalnego wpływania na zachowanie Latte w komponentach i prezenterach.

latte:
	# show Latte bar in Tracy Bar for main template (true) or all components (all)?
	debugger: ...        # (true|false|'all') domyślnie jest true

	# generowanie szablonów z nagłówkami declare(strict_types=1)
	strictTypes: ...     # (bool) domyślnie jest false

	# włącza [ścisły tryb parsera |latte:develop#strict mode]
	strictParsing: ...   # (bool) domyślnie false

	# włącza [sprawdzanie wygenerowanego kodu |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) domyślnie null

	# klasa obiektów $this->template
	templateClass: AppMyTemplateClass # domyślnie jest Nette\Bridges\ApplicationLatte\DefaultTemplate

Jeśli używasz Latte w wersji 3, możesz dodać nowe rozszerzenia za pomocą:

latte:
	extensions:
		- Latte\Essential\TranslatorExtension

Routing

Ustawienia podstawowe:

routing:
	# show routing bar in Tracy Bar?
	debugger: ...   # (bool) domyślnie jest true

	# serializuje router do kontenera DI
	cache: ...      # (bool) domyślnie jest false

Routing jest zwykle definiowany w klasie RouterFactory. Alternatywnie, routery mogą być również zdefiniowane w konfiguracji przy użyciu par maska: akce, ale ta metoda nie oferuje tak szerokiego spektrum ustawień:

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

Stałe

Tworzenie stałych PHP.

constants:
	Foobar: 'baz'

Po uruchomieniu aplikacji zostanie utworzona stała Foobar.

Stałe nie powinny być używane jako zmienne dostępne globalnie. Użyj zastrzyku zależności, aby przekazać wartości do obiektów.

PHP

Ustawianie dyrektyw PHP. Przegląd wszystkich dyrektyw można znaleźć na stronie php.net.

php:
	date.timezone: Europe/Prague

Usługi DI

Usługi te są dodawane do kontenera DI:

Nazwa Typ Opis
application.application Nette\Application\Application pełny program uruchamiający aplikacje
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory fabryka prezenterów
application.### Nette\Application\UI\Presenter indywidualni prezenterzy
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory fabryka dla Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory fabryka dla $this->template