You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: application/cs/bootstrap.texy
+1-1
Original file line number
Diff line number
Diff line change
@@ -66,7 +66,7 @@ class Bootstrap
66
66
index.php
67
67
=========
68
68
69
-
Prvotní soubor je v případě webových aplikací `index.php`, který se nachází ve veřejném adresáři `www/`. Ten si nechá od třídy Bootstrap inicializovat prostředí a vyrobit DI kontejner. Poté z něj získá službu `Application`, která spustí webovou aplikaci:
69
+
Prvotní soubor je v případě webových aplikací `index.php`, který se nachází ve [veřejném adresáři |directory-structure#verejny-adresar-www] `www/`. Ten si nechá od třídy Bootstrap inicializovat prostředí a vyrobit DI kontejner. Poté z něj získá službu `Application`, která spustí webovou aplikaci:
Copy file name to clipboardexpand all lines: application/cs/creating-links.texy
+2-2
Original file line number
Diff line number
Diff line change
@@ -103,7 +103,7 @@ Pokud je cílem akce `default`, můžeme ji vynechat, ale dvojtečka musí zůst
103
103
<a n:href="Home:">úvodní stránka</a>
104
104
```
105
105
106
-
Odkazy mohou také směřovat do jiných [modulů |modules]. Zde se odkazy rozlišují na relativní do zanořeného submodulu, nebo absolutní. Princip je analogický k cestám na disku, jen místo lomítek jsou dvojtečky. Předpokládejme, že aktuální presenter je součástí modulu `Front`, potom zapíšeme:
106
+
Odkazy mohou také směřovat do jiných [modulů |directory-structure#Presentery a šablony]. Zde se odkazy rozlišují na relativní do zanořeného submodulu, nebo absolutní. Princip je analogický k cestám na disku, jen místo lomítek jsou dvojtečky. Předpokládejme, že aktuální presenter je součástí modulu `Front`, potom zapíšeme:
107
107
108
108
```latte
109
109
<a n:href="Shop:Product:show">odkaz na Front:Shop:Product:show</a>
@@ -281,6 +281,6 @@ Jak vytvářet odkazy s podobným komfortem jako má metoda `link()`, ale bez p
281
281
282
282
LinkGenerátor je služba, kterou si můžete nechat předat přes konstruktor a poté vytvářet odkazy jeho metodou `link()`.
283
283
284
-
Oproti presenterům je tu rozdíl. LinkGenerator vytváří všechny odkazy rovnou jako absolutní URL. A dále neexistuje žádný "aktuální presenter", takže nelze jako cíl uvést jen název akce `link('default')` nebo uvádět relativní cesty k [modulům |modules].
284
+
Oproti presenterům je tu rozdíl. LinkGenerator vytváří všechny odkazy rovnou jako absolutní URL. A dále neexistuje žádný "aktuální presenter", takže nelze jako cíl uvést jen název akce `link('default')` nebo uvádět relativní cesty k modulům.
285
285
286
286
Neplatné odkazy vždy vyhazují `Nette\Application\UI\InvalidLinkException`.
Copy file name to clipboardexpand all lines: application/cs/how-it-works.texy
+3-3
Original file line number
Diff line number
Diff line change
@@ -45,9 +45,9 @@ Adresářová struktura vypadá nějak takto:
45
45
└── <b>.htaccess</b> ← zakazuje přístup do všech adresářů krom www
46
46
\--
47
47
48
-
Adresářovou strukturu můžete jakkoliv měnit, složky přejmenovat či přesunout, a poté pouze upravit cesty k `log/` a `temp/` v souboru `Bootstrap.php` a dále cestu k tomuto souboru v `composer.json` v sekci `autoload`. Nic víc, žádná složitá rekonfigurace, žádné změny konstant. Nette totiž disponuje [chytrou autodetekcí|bootstrap#vyvojarsky-vs-produkcni-rezim].
48
+
Adresářovou strukturu můžete jakkoliv měnit, složky přejmenovat či přesunout, je zcela flexibilní. Nette navíc disponuje chytrou autodetekcí a automaticky rozpozná umístění aplikace včetně její URL základny.
49
49
50
-
U trošku větších aplikací můžeme složky s presentery a šablonami rozčlenit na disku do podadresářů a třídy do jmenných prostorů, kterým říkáme [moduly |modules].
50
+
U trošku větších aplikací můžeme složky s presentery a šablonami [rozčlenit do podadresářů |directory-structure#Presentery a šablony] a třídy do jmenných prostorů, kterým říkáme moduly.
51
51
52
52
Adresář `www/` představuje tzv. veřejný adresář neboli document-root projektu. Můžete jej přejmenovat bez nutnosti cokoliv dalšího nastavovat na straně aplikace. Jen je potřeba [nakonfigurovat hosting |nette:troubleshooting#Jak změnit či ostranit z URL adresář www] tak, aby document-root mířil do tohoto adresáře.
53
53
@@ -75,7 +75,7 @@ Jeho úkolem je:
75
75
76
76
Jakou že továrnu? Nevyrábíme přece traktory, ale webové stránky! Vydržte, hned se to vysvětlí.
77
77
78
-
Slovy „inicializace prostředí“ myslíme například to, že se aktivuje [Tracy|tracy:], což je úžasný nástroj pro logování nebo vizualizaci chyb. Na produkčním serveru chyby loguje, na vývojovém rovnou zobrazuje. Tudíž k inicializaci patří i rozhodnutí, zda web běží v produkčním nebo vývojářském režimu. K tomu Nette používá autodetekci: pokud web spouštíte na localhost, běží v režimu vývojářském. Nemusíte tak nic konfigurovat a aplikace je rovnou připravena jak pro vývoj, tak ostré nasazení. Tyhle kroky se provádějí a jsou podrobně rozepsané v kapitole o [třídě Bootstrap|bootstrap].
78
+
Slovy „inicializace prostředí“ myslíme například to, že se aktivuje [Tracy|tracy:], což je úžasný nástroj pro logování nebo vizualizaci chyb. Na produkčním serveru chyby loguje, na vývojovém rovnou zobrazuje. Tudíž k inicializaci patří i rozhodnutí, zda web běží v produkčním nebo vývojářském režimu. K tomu Nette používá [chytrou autodetekci|bootstrap#vyvojarsky-vs-produkcni-rezim]: pokud web spouštíte na localhost, běží v režimu vývojářském. Nemusíte tak nic konfigurovat a aplikace je rovnou připravena jak pro vývoj, tak ostré nasazení. Tyhle kroky se provádějí a jsou podrobně rozepsané v kapitole o [třídě Bootstrap|bootstrap].
79
79
80
80
Třetím bodem (ano, druhý jsme přeskočili, ale vrátíme se k němu) je spuštění aplikace. Vyřizování HTTP požadavků má v Nette na starosti třída `Nette\Application\Application` (dále `Application`), takže když říkáme spustit aplikaci, myslíme tím konkrétně zavolání metody s příznačným názvem `run()` na objektu této třídy.
Copy file name to clipboardexpand all lines: application/cs/templates.texy
+1-1
Original file line number
Diff line number
Diff line change
@@ -101,7 +101,7 @@ app/
101
101
└── <b>@layout.latte</b> ← jen pro Home, 2. varianta
102
102
\--
103
103
104
-
Pokud se presenter nachází v [modulu|modules], bude se dohledávat i o další adresářové úrovně výš, podle zanoření modulu.
104
+
Pokud se presenter nachází v modulu, bude se dohledávat i o další adresářové úrovně výš, podle zanoření modulu.
105
105
106
106
Název layoutu lze změnit pomocí `$this->setLayout('layoutAdmin')` a pak se bude očekávat v souboru `@layoutAdmin.latte`. Také lze přímo určit soubor se šablonou layoutu pomocí `$this->setLayout('/path/to/template.latte')`.
Copy file name to clipboardexpand all lines: application/en/bootstrap.texy
+1-1
Original file line number
Diff line number
Diff line change
@@ -66,7 +66,7 @@ class Bootstrap
66
66
index.php
67
67
=========
68
68
69
-
The initial file for web applicationsis `index.php`, located in the public directory `www/`. It uses the `Bootstrap` class to initialize the environment and create a DI container. Then, it obtains the `Application` service from the container, which launches the web application:
69
+
In the case of web applications, the primary file is `index.php`, which is located in the [public directory |directory-structure#public-directory-www] `www/`. This will have the Bootstrap class initialize the environment and produce a DI container. It then gets the `Application` service from it, which starts the web application:
Copy file name to clipboardexpand all lines: application/en/creating-links.texy
+2-2
Original file line number
Diff line number
Diff line change
@@ -103,7 +103,7 @@ If the action is `default`, we can omit it, but the colon must remain:
103
103
<a n:href="Home:">home</a>
104
104
```
105
105
106
-
Links may also point to other [modules]. Here, the links are distinguished into relative to the submodules, or absolute. The principle is analogous to disk paths, only instead of slashes there are colons. Let's assume that the actual presenter is part of module `Front`, then we will write:
106
+
Links may also point to other [modules|directory-structure#Presenters and Templates]. Here, the links are distinguished into relative to the submodules, or absolute. The principle is analogous to disk paths, only instead of slashes there are colons. Let's assume that the actual presenter is part of module `Front`, then we will write:
107
107
108
108
```latte
109
109
<a n:href="Shop:Product:show">link to Front:Shop:Product:show</a>
@@ -281,6 +281,6 @@ How to create links with the method `link()` comfort, but without the presence o
281
281
282
282
LinkGenerator is a service that you can have passed through the constructor and then create links using its method `link()`.
283
283
284
-
There is a difference compared to presenters. LinkGenerator creates all links as absolute URLs. Furthermore, there is no "current presenter", so it is not possible to specify only the name of the action `link('default')` or the relative paths to the [modules].
284
+
Compared to presenters, there's a difference. LinkGenerator creates all links directly as absolute URLs. Also, there is no "actual presenter", so you can't just list the action name `link('default')` as the target or list relative paths to modules.
Copy file name to clipboardexpand all lines: application/en/how-it-works.texy
+3-3
Original file line number
Diff line number
Diff line change
@@ -45,9 +45,9 @@ The directory structure looks something like this:
45
45
└── <b>.htaccess</b> ← prohibits access to all directories except www
46
46
\--
47
47
48
-
You can change the directory structure in any way, rename or move folders, and then just edit the paths to `log/` and `temp/` in the `Bootstrap.php` file and the path to this file in `composer.json` in the `autoload` section. Nothing more, no complicated reconfiguration, no constant changes. Nette has a [smart autodetection|bootstrap#development-vs-production-mode].
48
+
You can modify the directory structure however you like, rename or move folders - it's completely flexible. Nette also features smart autodetection and automatically recognizes the application location including its URL base.
49
49
50
-
For slightly larger applications, we can divide folders with presenters and templates into subdirectories (on disk) and into namespaces (in code), which we call [modules].
50
+
For slightly larger applications, we can organize presenter and template folders into [subdirectories |directory-structure#Presenters and templates] and group classes into namespaces, which we call modules.
51
51
52
52
The `www/` directory is the public directory or document-root of the project. You can rename it without having to set anything else on the application side. You just need to [configure the hosting |nette:troubleshooting#How to change or remove www directory from URL] so that the document-root goes to this directory.
53
53
@@ -75,7 +75,7 @@ Its task is:
75
75
76
76
What kind of factory? We do not produce tractors, but websites! Hold on, it'll be explained right away.
77
77
78
-
By "initialize the environment" we mean, for example, that [Tracy|tracy:] is activated, which is an amazing tool for logging or visualizing errors. It logs errorson the production server and displays them directly on the development server. Therefore, initialization also needs to decide whether the site is running in production or developer mode. To do this, Nette uses autodetection: if you run the site on localhost, it runs in developer mode. You don't have to configure anything and the application is ready for both development and production deployment. These steps are performed and described in detail in the chapter about [Bootstrap class|bootstrap].
78
+
By "environment initialization" we mean, for example, activating [Tracy|tracy:], which is a fantastic tool for logging and error visualization. On production servers it logs errors, while on development it displays them directly. Therefore, initialization includes determining whether the website runs in production or development mode. For this, Nette uses [smart autodetection|bootstrap#development-vs-production-mode]: if you run the site on localhost, it operates in development mode. No configuration is needed and the application is ready for both development and production deployment. These steps are performed and detailed in the [Bootstrap class|bootstrap] chapter.
79
79
80
80
The third point (yes, we skipped the second, but we will return to it) is to start the application. The handling of HTTP requests in Nette is done by the class `Nette\Application\Application` (hereinafter referred to as the `Application`), so when we say "run an application", we mean to call a method with the name `run()` on an object of this class.
Copy file name to clipboardexpand all lines: application/en/templates.texy
+1-1
Original file line number
Diff line number
Diff line change
@@ -101,7 +101,7 @@ app/
101
101
└── <b>@layout.latte</b> ← only for Home, 2nd variant
102
102
\--
103
103
104
-
If the presenter is in a [module|modules], it will also search further up the directory tree according to the module's nesting.
104
+
If the presenter is in a module, it will also search further up the directory tree according to the module's nesting.
105
105
106
106
The name of the layout can be changed using `$this->setLayout('layoutAdmin')` and then it will be expected in the file `@layoutAdmin.latte`. You can also directly specify the layout template file using `$this->setLayout('/path/to/template.latte')`.
Copy file name to clipboardexpand all lines: nette/cs/glossary.texy
+7-5
Original file line number
Diff line number
Diff line change
@@ -107,12 +107,14 @@ Architektura, vycházející z [#Model-View-Controller].
107
107
108
108
Modul
109
109
-----
110
-
[Modul |application:modules] představuje v Nette Framework balíček presenterů a šablon, případně i komponent a modelů, které dodávají presenteru data. Je to tedy určitá logická část aplikace.
110
+
Modul představuje logickou část aplikace. V typickém uspořádání jde o skupinu presenterů a šablon, které řeší určitou oblast funkcionality. Moduly umísťujeme do [samostatných adresářů |application:directory-structure#Presentery a šablony], jako např. `Front/`, `Admin/` nebo `Shop/`.
111
111
112
-
Například e-shop může mít tři moduly:
113
-
1) katalog produktů s košíkem
114
-
2) administrace pro zákazníka
115
-
3) administrace pro provozovatele
112
+
Například e-shop rozdělíme na:
113
+
- Frontend (`Shop/`) pro prohlížení produktů a nákup
114
+
- Zákaznickou sekci (`Customer/`) pro správu objednávek
115
+
- Administraci (`Admin/`) pro provozovatele
116
+
117
+
Technicky jde o běžné adresáře, které ale díky přehlednému členění pomáhají aplikaci škálovat. Presenter `Admin:Product:List` tak bude fyzicky umístěn například v adresáři `app/Presentation/Admin/Product/List/` (viz [mapování presenterů|application:directory-structure#mapování presenterů]).
Copy file name to clipboardexpand all lines: nette/cs/troubleshooting.texy
+7-2
Original file line number
Diff line number
Diff line change
@@ -83,9 +83,14 @@ Jak změnit či ostranit z URL adresář `www`?
83
83
-------------------------------------------
84
84
Adresář `www/` používaný u ukázkových projektů v Nette představuje tzv. veřejný adresář neboli document-root projektu. Jde o jediný adresář, jehož obsah je přístupný prohlížeči. A obsahuje soubor `index.php`, vstupní bod, který spouští webovou aplikaci napsanou v Nette.
85
85
86
-
Pro zprovoznění aplikace na hostingu je potřeba, abyste v konfiguraci hostingu nastavili tzv. document-root do tohoto adresáře. Nebo, pokud hosting má pro veřejný adresář předpřipravenou složku s jiným názvem (například `web`, `public_html` atd.), tak `www/` jednoduše přejmenujte.
86
+
Pro zprovoznění aplikace na hostingu je potřeba mít správně nakonfigurovaný document-root. Máte dvě možnosti:
87
+
1. V konfiguraci hostingu nastavit document-root na tento adresář
88
+
2. Pokud má hosting předpřipravenou složku (např. `public_html`), přejmenujte `www/` na tento název
87
89
88
-
Řešením **naopak není** zamezit přístupu do všech složek kromě `www/` pomocí pravidel v souboru `.htaccess` nebo v routeru. Pokud by hosting neumožňoval nastavit document-root do podadresáře (tj. vytvářet adresáře o úroveň výš nad veřejným adresářem), poohlédněte se po jiném. Šli byste jinak do značného bezpečnostního rizika. Bylo by to jako bydlet v bytě, kde nejdou zavřít vstupní dveře a jsou stále dokořán.
90
+
.[warning]
91
+
Nikdy se nesnažte řešit zabezpečení jen pomocí `.htaccess` nebo routeru, které by zamezovaly přístup do ostatních složek.
92
+
93
+
Pokud by hosting neumožňoval nastavit document-root do podadresáře (tj. vytvářet adresáře o úroveň výš nad veřejným adresářem), poohlédněte se po jiném. Šli byste jinak do značného bezpečnostního rizika. Bylo by to jako bydlet v bytě, kde nejdou zavřít vstupní dveře a jsou stále dokořán.
Copy file name to clipboardexpand all lines: nette/en/glossary.texy
+7-5
Original file line number
Diff line number
Diff line change
@@ -107,12 +107,14 @@ Architecture based on [#Model-View-Controller].
107
107
108
108
Module
109
109
------
110
-
[Module |application:modules] in Nette Framework represents a collection of presenters and templates, eventually also components and models, that serve data to a presenter. So it is certain logical part of an application.
110
+
A module represents a logical part of an application. Typically, it's a group of presenters and templates handling a specific functionality area. Modules are placed in [separate directories|application:directory-structure#Presenters and templates], like `Front/`, `Admin/`, or `Shop/`.
111
111
112
-
For example, an e-shop can have three modules:
113
-
1) Product catalogue with basket.
114
-
2) Administration for the customer.
115
-
3) Administration for the shopkeeper.
112
+
For example, an e-shop can be divided into:
113
+
- Frontend (`Shop/`) for browsing products and purchasing
114
+
- Customer section (`Customer/`) for order management
115
+
- Administration (`Admin/`) for operators
116
+
117
+
Technically, these are regular directories that help scale the application through clear organization. The presenter `Admin:Product:List` would be physically located in directory `app/Presentation/Admin/Product/List/` (see [presenter mapping|application:directory-structure#presenter mapping]).
0 commit comments