Skip to content

Commit 813c74b

Browse files
committed
modules => directory structure
1 parent cab1c2e commit 813c74b

20 files changed

+50
-36
lines changed

application/cs/@left-menu.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Aplikace v Nette
44
- [Bootstrap]
55
- [Presentery |presenters]
66
- [Šablony |templates]
7-
- [Moduly |modules]
7+
- [Adresářová struktura |directory-structure]
88
- [Routování |routing]
99
- [Vytváření odkazů URL |creating-links]
1010
- [Interaktivní komponenty |components]

application/cs/bootstrap.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class Bootstrap
6666
index.php
6767
=========
6868

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:
7070

7171
```php
7272
$bootstrap = new App\Bootstrap;

application/cs/configuration.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Volba `silentLinks` určuje, jak se Nette zachová ve vývojářském režimu, k
4444

4545
[Aliasy zjednodušují odkazování |creating-links#aliasy] na často používané presentery.
4646

47-
[Mapování definuje pravidla |modules#mapování], podle kterých se z názvu presenteru odvodí název třídy.
47+
[Mapování definuje pravidla |directory-structure#mapování presenterů], podle kterých se z názvu presenteru odvodí název třídy.
4848

4949

5050
Automatická registrace presenterů

application/cs/creating-links.texy

+2-2
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ Pokud je cílem akce `default`, můžeme ji vynechat, ale dvojtečka musí zůst
103103
<a n:href="Home:">úvodní stránka</a>
104104
```
105105

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:
107107

108108
```latte
109109
<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
281281

282282
LinkGenerátor je služba, kterou si můžete nechat předat přes konstruktor a poté vytvářet odkazy jeho metodou `link()`.
283283

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.
285285

286286
Neplatné odkazy vždy vyhazují `Nette\Application\UI\InvalidLinkException`.

application/cs/how-it-works.texy

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ Adresářová struktura vypadá nějak takto:
4545
└── <b>.htaccess</b> ← zakazuje přístup do všech adresářů krom www
4646
\--
4747

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.
4949

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.
5151

5252
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.
5353

@@ -75,7 +75,7 @@ Jeho úkolem je:
7575

7676
Jakou že továrnu? Nevyrábíme přece traktory, ale webové stránky! Vydržte, hned se to vysvětlí.
7777

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].
7979

8080
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.
8181

application/cs/routing.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ $router->addRoute('<lang cs|en>', function (string $lang) {
368368
Moduly
369369
------
370370

371-
Pokud máme více rout, které spadají do společného [modulu |modules], využijeme `withModule()`:
371+
Pokud máme více rout, které spadají do společného [modulu |directory-structure#Presentery a šablony], využijeme `withModule()`:
372372

373373
```php
374374
$router = new RouteList;

application/cs/templates.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ app/
101101
└── <b>@layout.latte</b> ← jen pro Home, 2. varianta
102102
\--
103103

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.
105105

106106
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')`.
107107

application/en/@left-menu.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Nette Application
44
- [Bootstrap]
55
- [Presenters]
66
- [Templates]
7-
- [Modules]
7+
- [Directory structure |directory-structure]
88
- [Routing]
99
- [Creating URL Links |creating-links]
1010
- [Interactive Components |components]

application/en/bootstrap.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class Bootstrap
6666
index.php
6767
=========
6868

69-
The initial file for web applications is `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:
7070

7171
```php
7272
$bootstrap = new App\Bootstrap;

application/en/configuration.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Option `silentLinks` determines how Nette behaves in developer mode when link ge
4444

4545
[Aliases simplify referencing |creating-links#aliases] frequently used presenters.
4646

47-
The [mapping defines the rules |modules#mapping] by which the class name is derived from the presenter name.
47+
The [mapping defines the rules |directory-structure#Presenter Mapping] by which the class name is derived from the presenter name.
4848

4949

5050
Automatic Registration of Presenters

application/en/creating-links.texy

+2-2
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ If the action is `default`, we can omit it, but the colon must remain:
103103
<a n:href="Home:">home</a>
104104
```
105105

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:
107107

108108
```latte
109109
<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
281281

282282
LinkGenerator is a service that you can have passed through the constructor and then create links using its method `link()`.
283283

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.
285285

286286
Invalid links always throw `Nette\Application\UI\InvalidLinkException`.

application/en/how-it-works.texy

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ The directory structure looks something like this:
4545
└── <b>.htaccess</b> ← prohibits access to all directories except www
4646
\--
4747

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.
4949

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.
5151

5252
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.
5353

@@ -75,7 +75,7 @@ Its task is:
7575

7676
What kind of factory? We do not produce tractors, but websites! Hold on, it'll be explained right away.
7777

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 errors on 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.
7979

8080
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.
8181

application/en/routing.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ $router->addRoute('<lang cs|en>', function (string $lang) {
368368
Modules
369369
-------
370370

371-
If we have more routes that belong to one [module |modules], we can use `withModule()` to group them:
371+
If we have more routes that belong to one [module |directory-structure#Presenters and Templates], we can use `withModule()` to group them:
372372

373373
```php
374374
$router = new RouteList;

application/en/templates.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ app/
101101
└── <b>@layout.latte</b> ← only for Home, 2nd variant
102102
\--
103103

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.
105105

106106
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')`.
107107

nette/cs/@home.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Aplikace v Nette
3737
- [application:Bootstrap]
3838
- [Presentery |application:presenters]
3939
- [Šablony |application:templates]
40-
- [Moduly |application:modules]
40+
- [Adresářová struktura |application:directory-structure]
4141
- [Routování |application:routing]
4242
- [Vytváření odkazů URL |application:creating-links]
4343
- [Interaktivní komponenty |application:components]

nette/cs/glossary.texy

+7-5
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,14 @@ Architektura, vycházející z [#Model-View-Controller].
107107

108108
Modul
109109
-----
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/`.
111111

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ů]).
116118

117119

118120
Namespace

nette/cs/troubleshooting.texy

+7-2
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,14 @@ Jak změnit či ostranit z URL adresář `www`?
8383
-------------------------------------------
8484
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.
8585

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
8789

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.
8994

9095

9196
Jak nastavit server pro hezká URL?

nette/en/@home.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Nette Application
3737
- [application:Bootstrap]
3838
- [application:Presenters]
3939
- [application:Templates]
40-
- [application:Modules]
40+
- [Directory structure |application:directory-structure]
4141
- [application:Routing]
4242
- [Creating URL Links |application:creating-links]
4343
- [Interactive Components |application:components]

nette/en/glossary.texy

+7-5
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,14 @@ Architecture based on [#Model-View-Controller].
107107

108108
Module
109109
------
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/`.
111111

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]).
116118

117119

118120
Namespace

0 commit comments

Comments
 (0)