Admin routing pomocí mappingu na složku admin

jimmeak
Člen | 5
+
0
-

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

CZechBoY
Člen | 3608
+
+1
-

Pokud odkazujes z Front modulu musis pouzit absolutni cestu, tzn. s : na zacatku – :Admin:Dashboard:

Editoval CZechBoY (1. 11. 2020 18:21)

jimmeak
Člen | 5
+
0
-

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?

CZechBoY
Člen | 3608
+
0
-

Ano, pokud nezadas absolutni cestu tak se bere chybejici cast z aktualni cesty.

Pokud Apache/webserver hlasi 404 tak neni nejspis neni nakonfigurovany spravne. Menil si defaultni htaccess nebo mas nestandardne usporadany projekt? napr. presunuta slozka www

jimmeak
Člen | 5
+
0
-

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. :)

galab
Backer | 74
+
0
-

Nemůže to být tím, že se snaží Apache hledat obsah (např. index.php) ve složce admin? Pokud zkusíš tu složku přejmenovat, nezačne to fungovat?