Jako základ webu rozděleného na tyto moduly je použitý nette/web-project
Z něj můžete bez úprav použít tyto soubory a nechat je ve složce Presenters
Vytvořte tuto strukturu složek (soubory HomepagePresenter vyžadují specifický namespace – o tom více níže)
app/
├── AdminModule/
│ ├── templates/
│ │ ├── Homepage/
│ │ │ └── default.latte
│ │ └── @layout.latte
│ └── HomepagePresenter.php
├── FrontModule/
│ ├── templates/
│ │ ├── Homepage/
│ │ │ └── default.latte
│ │ └── @layout.latte
│ └── HomepagePresenter.php
└── Presenters/
├── templates/
│ └── Error/
│ ├── 403.latte
│ ├── 404.latte
│ ├── 405.latte
│ ├── 410.latte
│ ├── 4xx.latte
│ ├── 500.phtml
│ └── 503.phtml
├── Error4xxPresenter.php
└── ErrorPresenter.php
Tato konfigurace nastavuje, v jakých namespacech musí být presentery
jednotlivých modulů
common.neon
application:
errorPresenter: Error
mapping:
*: App\*Module\Presenters\*Presenter
V routeru nastavíte, že modul Admin bude dostupný na url https://example.com/admin a modul Front na
url https://example.com/
RouterFactory.php
<?php
declare(strict_types=1);
namespace App\Router;
use Nette;
use Nette\Application\Routers\RouteList;
final class RouterFactory
{
use Nette\StaticClass;
public static function createRouter(): RouteList
{
$router = new RouteList;
$router->withModule('Admin')
->addRoute('admin/<presenter>[/<action>][/<id>]', 'Homepage:default');
$router->withModule('Front')
->addRoute('<presenter>[/<action>][/<id>]', 'Homepage:default');
return $router;
}
}
Ukázka souboru s namespace odpovídajícím konfiguraci.
HomepagePresenter.php ve složce app\AdminModule\Presenters
<?php
declare(strict_types=1);
namespace App\AdminModule\Presenters;
use Nette;
class HomepagePresenter extends Nette\Application\UI\Presenter
{
}
HomepagePresenter.php ve složce app\FrontModule\Presenters
<?php
declare(strict_types=1);
namespace App\FrontModule\Presenters;
use Nette;
class HomepagePresenter extends Nette\Application\UI\Presenter
{
}
Teď už stačí pro každý modul vytvořit @layout.latte a /templates/Homepage/default.latte a máte funkční moduly