Zvlastnost v SimpleRouteri

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

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
+
0
-

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
+
0
-

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.

Yrwein
Člen | 45
+
0
-

…jen škoda, že není vůle takové divné chování změnit.

westrem
Člen | 398
+
0
-

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.