Admin routing pomocí mappingu na složku admin
- jimmeak
- Člen | 5
Zdravím,
zápasím s takovou, zřejmě hloupostí. Všiml jsem si, že víc lidí řešilo tuto věc, ale nikde jsem nenašel, co bych přesně potřeboval já.
Prvně jsem si chtěl nastavit vlastní mapping, abych viděl, jestli mu rozumím. Tak jsem si napsal v common.neon
application:
errorPresenter: Error
mapping:
Admin: App\admin\Preseters\*Presenter
Front: App\front\Presenters\*Presenter
Potom jsem si napsal Routing tímhle způsobem:
public static function createRouter(): RouteList
{
$router = new RouteList;
foreach(self::createDataForRouterAdmin() as $prettyURL => $presenterTemplate ) {
$router->withModule('Admin')->addRoute($prettyURL, $presenterTemplate);
}
foreach(self::createDataForRouterFront() as $prettyURL => $presenterTemplate ) {
$router->withModule('Front')->addRoute($prettyURL, $presenterTemplate);
}
$router->addRoute('<presenter>/<action>[/<id>]', 'Front:Homepage:default');
return $router;
}
private static function createDataForRouterFront() : array
{
return array(
'something' => 'Something:something',
'something-else' => 'Something:something_else'
);
}
private static function createDataForRouterAdmin() : array
{
return array(
'admin' => 'Dashboard:default'
);
}
Když přejdu na %domain%/something, případně %domain%/something-else, nedělá to problémy. Ovšem pokud přijdu na %domain%/admin, vyhodí mi to Not Found
The requested URL was not found on this server.
Pokud se pokusím vytvořit odkaz pomocí
<a n:href="Admin:Dashboard:default">Admin</a>
, dostanu
chybu (warning)
`User Warning
Invalid link: Cannot load presenter ‚Front:Admin:Dashboard‘, class
‚App\front\Presenters\AdminModule\DashboardPresenter‘ was not found.`
Co jsem tedy nastavil špatně? Moje souborová struktura je
app
- admin
-- Presenters
- front
-- Presenters
- config
- Router
- nějaké další složky s tímhle nesouvisející.
Na závěr jsem chtěl říct, že vím, že bych si asi mohl usnadnit plno práce tím, že bych to všechno udělal jako FrontModule, AdminModule, ale to mi přijde, že bych akorát zakryl tomu, že tomu nerozumím, něčím, co už lidem funguje. Raději bych tedy, kdybyste mi mohli poradit, jak přímo vyřešit tenhle můj problém, abych měl svoje složky admin a front s těmihle názvy.
Díky,
J
- jimmeak
- Člen | 5
Díky! Všiml jsem si ještě jedné chyby, že jsem měl uvnitř common.neon Preseters místo Presenters.
Už se mi tedy tvoří odkazy. Ta dvojtečka na začátku tedy určí, že beru v potaz komplení cestu danou v mapping, kdežto pokud tam není, tak zůstávám v current modulu?
Pořád mě ale ještě trápí ten admin. Pokud přidám routu
addRoute("admina", "Dashboard:default")
, potom mi vše funguje.
Pokud to samé ale udělám s admin, tak mi to vyhazuje
Not Found
The requested URL was not found on this server.
Apache/2.4.38 (Debian) Server at scorette.ju Port 443
ale jestli chápu dobře, tak to bude více problém mého nastavení Apache?
- jimmeak
- Člen | 5
Kromě složky admin a front mám všechno standardně. htaccess jsem
neměnil.
Spouštím si aplikaci přes docker-compose pomocí image. Takže možná bude
problém tam. Ono to pustí všechno kromě /admin, takže hádám, že je tam
nějaká ENV proměnná, která musí být nastavená. Zkusím se zeptat
autora image.
Každopádně ti moc děkuju za ochotu i trpělivost. :)