Zvlastnost v SimpleRouteri
- westrem
- Člen | 398
Ahojte,
mohol by mi niekto prosim vas vysvetlit rozdiel v nasledovnom zapise:
<?php
// 1)
$router[] = new NSimpleRouter(array(
'module' => 'Front',
'presenter' => 'Static',
'action' => 'index',
));
// 2)
$router[] = new NSimpleRouter('Front:Static:index');
?>
Mal som za to, ze su plne ekvivalentne.
Avsak ked pouzijem prvy sposob, tak ked v template pouzijem
{plink :Login:}
vygeneruje sa v odkaze hlaska „error: No route
for :Login:default exists“ kdezto pri pouziti druheho sposobu funguje vsetko
okej a link sa vygeneruje spravne a funguje.
Unika mi nieco?
PS: Nette 0.9.4 for PHP 5.2 Prefixed
- westrem
- Člen | 398
Ocividne je vsak zadrhel v tom ako sa konstruuje pole $defaults
ked SimpleRoutrovi predam string
Nasledne je ekvivalentne:
<?php
// 1)
$router[] = new NSimpleRouter(array(
'presenter' => 'Front:Static',
'action' => 'index',
));
// 2)
$router[] = new NSimpleRouter('Front:Static:index');
// 3) neekvivalentne
$router[] = new NSimpleRouter(array(
'module' => 'Front',
'presenter' => 'Static',
'action' => 'index',
));
?>
Rozdiel je v tom, ze pri 3. sposobe sa nastavi premenna
$this->module
co Routru ocividne vadi ked sa snazi najst
matching routu pre {plink :Login:}
Neviem, mne toto nepride ako intuitivne chovanie, vie mi to niekto rozumne vysvetlit a zdovodnit, alebo sa nebodaj jedna o nejaky bug?
Este raz vdaka.
- LM
- Člen | 206
viz https://forum.nette.org/…eny-v-rev-14?…:
David Grudl napsal(a):
Parametr Module slouží jako povinný prefix, aby se dal omezit prostor, kam se SimpleRouterem uživatel může dostat.
- westrem
- Člen | 398
LM napsal(a):
viz https://forum.nette.org/…eny-v-rev-14?…:
David Grudl napsal(a):
Parametr Module slouží jako povinný prefix, aby se dal omezit prostor, kam se SimpleRouterem uživatel může dostat.
To je z toho kodu jasne, len cloveka dost metie, ked nieco zapise v podstate ekvivalentne a ono to ekvivalentne nie je.
To, ze parameter modul sluzi ako limitujuci faktor je naprosto v poriadku, len tato vec mi pride metuca.