route zacatecnicky dotaz

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

Ahoj
jde mi o adresu ve tvaru domena.cz/nazevKategorie kde nazevkategorie se dynamicky meni

dospel jsem k tomuhle

<?php
$router[] = new Route('<kategorie>', array(
	'presenter' => 'Kategorie',
	'action' => 'default',
));
?>

a samotna routa mi funguje ale co mi uz nefunguje je {plink Kategorie:default}

myslel jsem ze link se z toho routeru vezme opacnym zpusobem ale asi to byla spatna uvaha.

Diky za pomoc

Ondrej
Člen | 110
+
0
-

pEeLL napsal(a):

{plink Kategorie:default}

parametr kategorie je povinny, takze ho musis linku predat.

$presenter->link('Kategorie:default', array('kategorie' => 'hardware'))
Ola
Člen | 385
+
0
-

{plink Kategorie:default} Ti nefunguje, protože ta routa očekává další parametr – kategorii, kterou v tom linku nespecifikuješ. Mimochodem, to co jsi napsal jde napsat také jako {plink Kategorie:} (default si v routě specifikoval jako výchozí hodnotu pro action, nemusíš jí tedy psát)

To pole s parametry si prostě představ jako pole výchozích hodnot, řešením tvého problému je tedy to opravit na:

$router[] = new Route('<kategorie>', array(
        'presenter' => 'Kategorie',
        'action' => 'default',
	'kategorie' => NULL,
));
  • v presenteru potom budeš dostaneš jako hodnotu parametru kategorie NULL, což ale většinou není žádoucí (pokud ovšem nechceš zobrazovat všechny kategorie), vyřešit se to dá nahrazením hodnoty NULL jinou.

Ještě pozor na to, že takovou routu poté namatchuje i prázdná adresa – http://example.tld

EDIT: Ondrej byl rychlejší :-)

Editoval Ola (4. 7. 2009 15:45)

pEeLL
Člen | 23
+
0
-

Ondrej:
diky moc presne tohle jsem potreboval

Ola:

<?php ‚kategorie‘ ⇒ NULL, ?>
tohle je mi jasne a funguje – odkaz smeruje na domena.cz

<?php ‚kategorie‘ ⇒ ‚cokoliv‘, ?>
ale tohle mi udela uplne to stejne jako NULL – odkaz smeruje opet na domena.cz
myslel jsem ze kdyz to tedy bude jako vychozi tak kdyz v linku nic nezvolim tak byse melo zvolit to „cokoli“ a odkaz tedy smerovat na domena.cz/cokoli

PetrP
Člen | 587
+
0
-

Výchozí hodnota v routě se použije když je prázdná v url. Představ si to jako výchozí hodnoty parametrů u funkce.

pEeLL
Člen | 23
+
0
-

PetrP
Diky uz jsem to pochopil.