Viac Modulov a ich routovanie

před rokem

vsimjak
Člen | 9
+
0
-

Zdravím, chcel by som sa poradiť. Mám aplikáciu kde riešim viac modulov a pri tomto nastavní Route suboru sa mi stava vec že vždy prvý Route vezme ako nadardený a ked sa chcem linkovať na ostatné tak vždy berie prvý Route ako modul a hľadá presenter pre danu linku. Viete mi poradiť?

public static function createRouter()
    {

        $router = new RouteList;


        $router[] = new Route('<presenter>/<action>[/<id>]\'', array(
            'module' => 'Login',
            'presenters' => 'Login',
            'action' => 'default',
            'id' => NULL,
        ));

        $router[] = new Route('<presenter>/<action>[/<id>]\'', array(
            'module' => 'Admin',
            'presenters' => 'Admin',
            'action' => 'default',
            'id' => NULL,
        ));

        $router[] = new Route('<presenter>/<action>[/<id>]\'', array(
            'module' => 'AutoKino',
            'presenters' => 'AutoKino',
            'action' => 'default',
            'id' => NULL,
        ));



        //$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
        return $router;
    }

Vystup v prehliadači.

Cannot load presenter 'Login:Admin', class 'App\LoginModule\Presenters\AdminPresenter' was not found.

před rokem

duke
Člen | 606
+
0
-

Musíš jednotlivé routy nějak odlišit, aby byly od sebe rozpoznatelné. A pak je definovat v pořadí od nejspecifičtější k nejobecnější. Např.:

public static function createRouter()
{
        $router = new RouteList;

        $router[] = new Route('login/<presenter>/<action>[/<id>]', array(
            'module' => 'Login',
            'presenter' => 'Login',
            'action' => 'default',
            'id' => NULL,
        ));

        $router[] = new Route('admin/<presenter>/<action>[/<id>]', array(
            'module' => 'Admin',
            'presenter' => 'Admin',
            'action' => 'default',
            'id' => NULL,
        ));

        $router[] = new Route('<presenter>/<action>[/<id>]', array(
            'module' => 'AutoKino',
            'presenter' => 'AutoKino',
            'action' => 'default',
            'id' => NULL,
        ));

        return $router;
  }

Toto ale povede na url jako:

  • login/login/
  • admin/admin/default/2
  • autokino/someaction/5

Pokud máš ale v modulu jen 1 presenter, nemusíš ho vůbec do masky routy uvádět.
Nejdřív si ale ujasni, jak chceš, aby tvá url vlastně vypadala.

Editoval duke (2. 6. 2017 13:36)

před rokem

vsimjak
Člen | 9
+
0
-

Ďakujem pomohlo.