Vytvorenie seo optimálnej url bez nutnosti vytvoreni action metody

KristianSubweb
Člen | 144
+
0
-

Ahoj chcel by som sa Vás opýtať nejako neviem dať dohromady roueter pre jednu moju funkcionalitu.

Takéto niečo postrebujem vo výsledku:

mojadomena/moduly/nazov-modulu

Moduly je názov presenteru ako dalšie v tej url možete vidieť /nazov-modulu
a tam narážam na problém nechcem pre to vytvárat action metody v Moduly resentéru

Proste by som chcel aby to spracoval actionDefault a nie action podla toho názvu modulu.

Maine code:

protected function appendRouteList($routelist, $routemask, $destination) {

       $newRouteList = new RouteList($routelist);
       $newRoute = new Route($routemask, $destination);
       $newRouteList[] = $newRoute;

       $builder = $this->getContainerBuilder();
       $builder->parameters["createdRoutes"][] = $newRouteList;
 }

Potom mám vytvorený default module extension kde volám tuto funkciu

class DefaultExtension extends DefaultModuleExtension {

    public function loadConfiguration() {

    $this->appendRouteList("Front:Domov", '[<locale=sk sk|en|de>/]<presenter>/<action>[/<id>]', "Domov:default");

		//Toto je tá chybná routa
        $this->appendRouteList("Front:Moduly", '[<locale=sk sk|en|de>/]<presenter>/<action>[/<name>]', "Moduly:default");



        $builder = $this->getContainerBuilder();

        $builder->addDefinition($this->prefix('frontAuthentication'))
                ->setClass('FrontModule\Classes\FrontAuthentication')
                ->setAutowired("self");

        $builder->addDefinition($this->prefix('LoginFormFactory'))
                ->setClass('FrontModule\Factories\LoginFormFactory');

        $builder->addDefinition($this->prefix('contactFormFactory'))
            ->setClass('FrontModule\Factories\ContactFormFactory');

		$builder->addDefinition($this->prefix('appointmentFormFactory'))
			->setClass('FrontModule\Factories\AppointmentFormFactory');
    }

}

Ďakujem za vaše odpovede.

Editoval KristianSubweb (27. 9. 2019 11:21)

Ondřej Kubíček
Člen | 494
+
0
-

podle mě máš navíc v routě <action> tím pádem ho chceš mít v url, ale ty vlastně nechceš a chceš všechno poslat na default…

David Matějka
Moderator | 6445
+
+1
-

tak ten parametr v route nepojmenovavej action :)

KristianSubweb
Člen | 144
+
0
-

No skusil som ale stále hladá zakaznici.latte ale to ani nebude existovať spracuje mi to tá routa nad tým.

              $this->appendRouteList("Front:Moduly", '[<locale=sk sk|en|de>/]<presenter>/<name>', "Moduly:default");

//url : localhost/service/moduly/zakaznici

Tracy píše že to padlo do tejto

presenter = Domov
action = default
id = null
locale = sk

Front:Domov:Moduly:zakaznici
id = null
locale = sk

A pod tým je modra couta s výsledok:

presenter = Moduly
action = default
locale = sk

Front:Moduly:Moduly:default
name = zakaznici
locale = sk

Ale tá to nespravuje

Ondřej Kubíček
Člen | 494
+
0
-

no jasně ono neví kterou z těch dvou, ještě to můžeš udělat takhle, nevím jestli řešíš překlady ale to by šlo taky vyřešit

$this->appendRouteList("Front:Moduly", '[<locale=sk sk|en|de>/]moduly/<name>', "Moduly:default");
$this->appendRouteList("Front:Domov", '[<locale=sk sk|en|de>/]<presenter>/<action>[/<id>]', "Domov:default");
KristianSubweb
Člen | 144
+
0
-

Okey super už mi to ide diki moc za pomoc. Nie preklady v najbližšej dobe nebudeme riešiť. :)