Nette Documentation Preview

syntax
Alkalmazások konfigurálása
**************************

.[perex]
A Nette alkalmazások konfigurációs lehetőségeinek áttekintése.


Application
===========

```neon
application:
	# megjelenjen a "Nette Application" panel a Tracy BlueScreen-en?
	debugger: ...           # (bool) alapértelmezett: true

	# hiba esetén meghívódjon az error-presenter?
	# csak fejlesztői módban van hatása
	catchExceptions: ...    # (bool) alapértelmezett: true

	# az error-presenter neve
	errorPresenter: Error   # (string|array) alapértelmezett: 'Nette:Error'

	# aliasokat definiál presenterekhez és akciókhoz
	aliases: ...

	# szabályokat definiál a presenter nevének osztályra való fordításához
	mapping: ...

	# a hibás linkek nem generálnak figyelmeztetést?
	# csak fejlesztői módban van hatása
	silentLinks: ...        # (bool) alapértelmezett: false
```

A `nette/application` 3.2-es verziójától kezdve definiálható egy error-presenter pár:

```neon
application:
	errorPresenter:
		4xx: Error4xx   # Nette\Application\BadRequestException kivételhez
		5xx: Error5xx   # egyéb kivételekhez
```

A `silentLinks` opció meghatározza, hogyan viselkedik a Nette fejlesztői módban, ha a link generálása sikertelen (például mert nem létezik a presenter stb.). Az alapértelmezett `false` érték azt jelenti, hogy a Nette `E_USER_WARNING` hibát dob. `true`-ra állítva ez a hibaüzenet elnyomásra kerül. Éles környezetben az `E_USER_WARNING` mindig kiváltódik. Ezt a viselkedést a presenter [$invalidLinkMode |creating-links#Érvénytelen linkek] változójának beállításával is befolyásolhatjuk.

Az [Aliasok egyszerűsítik a hivatkozást |creating-links#Aliasok] a gyakran használt presenterekre.

A [Mapping definiálja a szabályokat |directory-structure#Presenterek map-elése], amelyek alapján a presenter nevéből levezetődik az osztály neve.


Presenterek automatikus regisztrációja
--------------------------------------

A Nette automatikusan hozzáadja a presentereket szolgáltatásként a DI konténerhez, ami jelentősen felgyorsítja azok létrehozását. A Nette presenterek felkutatásának módja konfigurálható:

```neon
application:
	# keresse a presentereket a Composer class map-ben?
	scanComposer: ...      # (bool) alapértelmezett: true

	# maszk, amelynek meg kell felelnie az osztály és a fájl nevének
	scanFilter: ...        # (string) alapértelmezett: '*Presenter'

	# mely könyvtárakban keresse a presentereket?
	scanDirs:              # (string[]|false) alapértelmezett: '%appDir%'
		- %vendorDir%/mymodule
```

A `scanDirs`-ben megadott könyvtárak nem írják felül az alapértelmezett `%appDir%` értéket, hanem kiegészítik azt, így a `scanDirs` mindkét utat tartalmazni fogja: `%appDir%` és `%vendorDir%/mymodule`. Ha az alapértelmezett könyvtárat ki szeretnénk hagyni, használjuk a [felkiáltójelet |dependency-injection:configuration#Összefésülés], amely felülírja az értéket:

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

A könyvtárak szkennelése kikapcsolható a false érték megadásával. Nem javasoljuk a presenterek automatikus hozzáadásának teljes elnyomását, mert ez csökkenti az alkalmazás teljesítményét.


Latte sablonok
==============

Ezzel a beállítással globálisan befolyásolható a Latte viselkedése a komponensekben és presenterekben.

```neon
latte:
	# megjelenjen a Latte panel a Tracy Bar-ban a fő sablonhoz (true) vagy az összes komponenshez (all)?
	debugger: ...        # (true|false|'all') alapértelmezett: true

	# generál sablonokat declare(strict_types=1) fejléccel
	strictTypes: ...     # (bool) alapértelmezett: false

	# bekapcsolja a [szigorú parser |latte:develop#striktní režim] módot
	strictParsing: ...   # (bool) alapértelmezett: false

	# aktiválja a [generált kód ellenőrzését |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) alapértelmezett: null

	# beállítja a locale-t
	locale: cs_CZ        # (string) alapértelmezett: null

	# a $this->template objektum osztálya
	templateClass: App\MyTemplateClass # alapértelmezett: Nette\Bridges\ApplicationLatte\DefaultTemplate
```

Ha a Latte 3-as verzióját használja, új [bővítményeket |latte:extending-latte#Latte Extension] adhat hozzá a következőkkel:

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

Ha a Latte 2-es verzióját használja, új tag-eket regisztrálhat akár az osztálynév megadásával, akár egy szolgáltatásra való hivatkozással. Alapértelmezés szerint az `install()` metódus hívódik meg, de ezt meg lehet változtatni egy másik metódus nevének megadásával:

```neon
latte:
	# egyéni Latte tag-ek regisztrálása
	macros:
		- App\MyLatteMacros::register         # statikus metódus, classname vagy callable
		- @App\MyLatteMacrosFactory           # szolgáltatás install() metódussal
		- @App\MyLatteMacrosFactory::register # szolgáltatás register() metódussal

services:
	- App\MyLatteMacrosFactory
```


Routing
=======

Alapbeállítások:

```neon
routing:
	# megjelenjen a routing panel a Tracy Bar-ban?
	debugger: ...   # (bool) alapértelmezett: true

	# szerializálja a routert a DI konténerbe
	cache: ...      # (bool) alapértelmezett: false
```

A routingot általában a [RouterFactory |routing#Route gyűjtemény] osztályban definiáljuk. Alternatívaként a route-okat a konfigurációban is definiálhatjuk `maszk: akció` párokkal, de ez a módszer nem kínál olyan széleskörű beállítási lehetőségeket:

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


Konstansok
==========

PHP konstansok létrehozása.

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

Az alkalmazás indítása után létrejön a `Foobar` konstans.

.[note]
A konstansok nem szolgálhatnak valamiféle globálisan elérhető változóként. Értékek objektumokba való átadásához használja a [dependency injectiont |dependency-injection:passing-dependencies].


PHP
===

PHP direktívák beállítása. Az összes direktíva áttekintése megtalálható a [php.net |https://www.php.net/manual/en/ini.list.php] oldalon.

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


DI szolgáltatások
=================

Ezek a szolgáltatások kerülnek hozzáadásra a DI konténerhez:

| Név           | Típus                        | Leírás
|----------------------------------------------------------
| `application.application`	     | [api:Nette\Application\Application]      |  [az egész alkalmazás indítója |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]     |  egyes presenterek
| `latte.latteFactory`           | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | `Latte\Engine` objektum factory-ja
| `latte.templateFactory`        | [api:Nette\Application\UI\TemplateFactory] | factory a [`$this->template` |templates] számára

Alkalmazások konfigurálása

A Nette alkalmazások konfigurációs lehetőségeinek áttekintése.

Application

application:
	# megjelenjen a "Nette Application" panel a Tracy BlueScreen-en?
	debugger: ...           # (bool) alapértelmezett: true

	# hiba esetén meghívódjon az error-presenter?
	# csak fejlesztői módban van hatása
	catchExceptions: ...    # (bool) alapértelmezett: true

	# az error-presenter neve
	errorPresenter: Error   # (string|array) alapértelmezett: 'Nette:Error'

	# aliasokat definiál presenterekhez és akciókhoz
	aliases: ...

	# szabályokat definiál a presenter nevének osztályra való fordításához
	mapping: ...

	# a hibás linkek nem generálnak figyelmeztetést?
	# csak fejlesztői módban van hatása
	silentLinks: ...        # (bool) alapértelmezett: false

A nette/application 3.2-es verziójától kezdve definiálható egy error-presenter pár:

application:
	errorPresenter:
		4xx: Error4xx   # Nette\Application\BadRequestException kivételhez
		5xx: Error5xx   # egyéb kivételekhez

A silentLinks opció meghatározza, hogyan viselkedik a Nette fejlesztői módban, ha a link generálása sikertelen (például mert nem létezik a presenter stb.). Az alapértelmezett false érték azt jelenti, hogy a Nette E_USER_WARNING hibát dob. true-ra állítva ez a hibaüzenet elnyomásra kerül. Éles környezetben az E_USER_WARNING mindig kiváltódik. Ezt a viselkedést a presenter $invalidLinkMode változójának beállításával is befolyásolhatjuk.

Az Aliasok egyszerűsítik a hivatkozást a gyakran használt presenterekre.

Mapping definiálja a szabályokat, amelyek alapján a presenter nevéből levezetődik az osztály neve.

Presenterek automatikus regisztrációja

A Nette automatikusan hozzáadja a presentereket szolgáltatásként a DI konténerhez, ami jelentősen felgyorsítja azok létrehozását. A Nette presenterek felkutatásának módja konfigurálható:

application:
	# keresse a presentereket a Composer class map-ben?
	scanComposer: ...      # (bool) alapértelmezett: true

	# maszk, amelynek meg kell felelnie az osztály és a fájl nevének
	scanFilter: ...        # (string) alapértelmezett: '*Presenter'

	# mely könyvtárakban keresse a presentereket?
	scanDirs:              # (string[]|false) alapértelmezett: '%appDir%'
		- %vendorDir%/mymodule

A scanDirs-ben megadott könyvtárak nem írják felül az alapértelmezett %appDir% értéket, hanem kiegészítik azt, így a scanDirs mindkét utat tartalmazni fogja: %appDir% és %vendorDir%/mymodule. Ha az alapértelmezett könyvtárat ki szeretnénk hagyni, használjuk a felkiáltójelet, amely felülírja az értéket:

application:
	scanDirs!:
		- %vendorDir%/mymodule

A könyvtárak szkennelése kikapcsolható a false érték megadásával. Nem javasoljuk a presenterek automatikus hozzáadásának teljes elnyomását, mert ez csökkenti az alkalmazás teljesítményét.

Latte sablonok

Ezzel a beállítással globálisan befolyásolható a Latte viselkedése a komponensekben és presenterekben.

latte:
	# megjelenjen a Latte panel a Tracy Bar-ban a fő sablonhoz (true) vagy az összes komponenshez (all)?
	debugger: ...        # (true|false|'all') alapértelmezett: true

	# generál sablonokat declare(strict_types=1) fejléccel
	strictTypes: ...     # (bool) alapértelmezett: false

	# bekapcsolja a [szigorú parser |latte:develop#striktní režim] módot
	strictParsing: ...   # (bool) alapértelmezett: false

	# aktiválja a [generált kód ellenőrzését |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) alapértelmezett: null

	# beállítja a locale-t
	locale: cs_CZ        # (string) alapértelmezett: null

	# a $this->template objektum osztálya
	templateClass: App\MyTemplateClass # alapértelmezett: Nette\Bridges\ApplicationLatte\DefaultTemplate

Ha a Latte 3-as verzióját használja, új bővítményeket adhat hozzá a következőkkel:

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

Ha a Latte 2-es verzióját használja, új tag-eket regisztrálhat akár az osztálynév megadásával, akár egy szolgáltatásra való hivatkozással. Alapértelmezés szerint az install() metódus hívódik meg, de ezt meg lehet változtatni egy másik metódus nevének megadásával:

latte:
	# egyéni Latte tag-ek regisztrálása
	macros:
		- App\MyLatteMacros::register         # statikus metódus, classname vagy callable
		- @App\MyLatteMacrosFactory           # szolgáltatás install() metódussal
		- @App\MyLatteMacrosFactory::register # szolgáltatás register() metódussal

services:
	- App\MyLatteMacrosFactory

Routing

Alapbeállítások:

routing:
	# megjelenjen a routing panel a Tracy Bar-ban?
	debugger: ...   # (bool) alapértelmezett: true

	# szerializálja a routert a DI konténerbe
	cache: ...      # (bool) alapértelmezett: false

A routingot általában a RouterFactory osztályban definiáljuk. Alternatívaként a route-okat a konfigurációban is definiálhatjuk maszk: akció párokkal, de ez a módszer nem kínál olyan széleskörű beállítási lehetőségeket:

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

Konstansok

PHP konstansok létrehozása.

constants:
	Foobar: 'baz'

Az alkalmazás indítása után létrejön a Foobar konstans.

A konstansok nem szolgálhatnak valamiféle globálisan elérhető változóként. Értékek objektumokba való átadásához használja a dependency injectiont.

PHP

PHP direktívák beállítása. Az összes direktíva áttekintése megtalálható a php.net oldalon.

php:
	date.timezone: Europe/Prague

DI szolgáltatások

Ezek a szolgáltatások kerülnek hozzáadásra a DI konténerhez:

Név Típus Leírás
application.application Nette\Application\Application az egész alkalmazás indítója
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory presenter factory
application.### Nette\Application\UI\Presenter egyes presenterek
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory Latte\Engine objektum factory-ja
latte.templateFactory Nette\Application\UI\TemplateFactory factory a $this->template számára