Routování ve tvaru id-predmet

před 6 měsíci

stickybit
Člen | 10
+
0
-

Dobrý den,

jsem začátečník s Nette a mám dotaz k vytváření routy. Chci docílit stejného tvaru URL, jako má toto Nette forum, tzn. domain.cz/id-predmet . Myslel jsem si, že to bude jednoduché, ale nevím jak do URI dostat „predmet“, který je uložený v databázi.

Nyní mně Nette vrací URI ve tvaru prispevek/default/292 a já chci prosté 292-predmet.

Jak bych mohl tohoto tvaru URI docílit nebo je to v Nette složité?

Předmět by měl být ošetřen o nahrazení mezer pomlčkami atd. = možná bude nejlepší v tabulce přidat další sloupec speciálně pro URI, kdy bude tvar uložen už ošetřený.

V mém starém PHP kódu, který předělávám pro Nette, to bylo velmi jednoduché, ale tady si s tím nevím rady.

Děkuji

před 6 měsíci

Darkling
Člen | 34
+
0
-

Ahoj,

doporučuju se podívat sem https://zlml.cz/…te-prakticky popřípadě přímo do dokumentace https://doc.nette.org/cs/2.4/routing.

před 6 měsíci

stickybit
Člen | 10
+
0
-

Ahoj,

škoda, že jsem zapomněl napsat, že už jsem to obojí četl. V uvedených návodech bohužel právě nevidím informaci, kterou hledám = jak do URI dostat kromě id i předmět.

Můj router vypadá takto

<?php
    public static function createRouter()
    {
      $router = new RouteList();
      $router[] = new Route('<action>', 'Homepage:default');
      $router[] = new Route('<id>-<predmet>', 'Prispevek:default');
      $router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
      return $router;
    }
?>

Routa new Route('<id>-<predmet>', 'Prispevek:default') je z nějakého důvodu ignorována, takže se obsah zobrazí jako prispevek/default/292 a nikoliv jako 292-predmet.

Díky

před 6 měsíci

Gappa
Člen | 40
+
+1
-

Ahoj,

a jak vypadá actionDefault v PrispevekPresenter?

Ignorována je nejspíš proto, že metoda actionDefault přijímá jen $id a už nikoliv $predmet.

před 6 měsíci

stickybit
Člen | 10
+
+1
-

Díky Gappo, pomohl jsi mně… Nechápal jsem jak tam ten předmět dostat a teď už to funguje, metoda default přijímala pouze $id. Díky