Routování – problém s pomlčkou

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Loric
Člen | 14
+
0
-

Zdravím, udělal sem si vlastní rout a nějak mi to nebere pomlčku. Chtěl bych, aby to udělalo něco jak toto:
neco.cz/article/10-nejaky-nazev-clanku, jenže výsledná url vypadá takto: neco.cz/article/10 (bez nazvu clanku). Kdyz ale vymenim pomlcku treba za lomitko, tak nazev clanku zustane. Jde mi jen o to, že výsledek vypadá s tou pomlčkou líp, tak snad to nějak pujde udělat..

$router[] = new Route("<presenter>/[<action>/]<id>[-<articleTitle>]", array(
            "presenter" => "Home",
            "action" => "default",
            "id" => NULL,
            "articleTitle" => NULL,
        ));

Editoval Loric (2. 7. 2010 11:44)

Jan Tvrdík
Nette guru | 2595
+
0
-
$router[] = new Route("<presenter>/[<action>/]<id>[!-<articleTitle>]", array(
            "presenter" => "Home",
            "action" => "default",
            "id" => NULL,
            "articleTitle" => NULL,
        ));
Loric
Člen | 14
+
0
-

tobrazí to jen id a pomlčku a pak už nic.. asi tam nechám lomítko, když to jinak nepujde…

Ola
Člen | 385
+
0
-

A předáváš i articleTitle při odkazování?

Loric
Člen | 14
+
0
-

myslíš toto?

{plink :article:, „id“ ⇒ $article->id, „articleTitle“ ⇒ $webalize_link}

Ola
Člen | 385
+
0
-

ano, zdá se to ok.. A je skutečně obsah $webalize_link nenullový? zkoušel jsem to na lokálu a funguje to správně (teda generování linku, match je zlý – nekonečná smyčka – tu routu je třeba modifikovat, zkus to takhle:)

$router[] = new Route("<presenter>/[<action>/]<id [0-9]+>[!-<articleTitle>]", array(
	"presenter" => "Home",
	"action" => "default",
	"id" => NULL,
	"articleTitle" => NULL,
));

Editoval Ola (3. 7. 2010 1:20)

Loric
Člen | 14
+
0
-

Když najedu na ten odkaz, ukáže se dole v tom statusbaru správný link. Může být problém ve verzi? Mám verzi 1.0 (alpha).

EDIT: jo super dik, snad to pujde

Editoval Loric (3. 7. 2010 1:23)

Ola
Člen | 385
+
0
-

Ta upravená routa, co jsem psal, by měla být v pořádku.

Ola
Člen | 385
+
0
-

Ještě si odstraň ten vykřičník, dělá tam bordel (nematchne potom např id=10 a articleTitle=NULL).

Loric
Člen | 14
+
0
-

Jede to.
Ještě bych měl jeden dotaz, už ne k routování.
V šabloně mám

{plink :article:, "id" => $article->id, "articleTitle" => $article->title|webalize}

jenže to zwebalizuje celý odkaz a tak musím udělat

{var $webalizeLink $article->title|webalize}
{plink :article:, "id" => $article->id, "articleTitle" => webalizeLink}

šlo by to nějak líp udělat?

Ola
Člen | 385
+
0
-

Kratší bude asi zapsat přímo volání funkce, tedy:
{plink :article:, "id" => $article->id, "articleTitle" => String::webalize($article->title)}. Případně, pokud máš $article jako nějakej vlastní objekt, pak mu můžeš přidat getter na seo url (nebo to rovnou uchovávat v DB).

Loric
Člen | 14
+
0
-

dík, snad už je to všechno co sem potřeboval :)