Přeskakování routy pokud nevyhovuje
- akadlec
- Člen | 1326
Dá se nějak udělat přeskočení routy pokud nevyhovuje? Dejme tomu že mam routu:
http://domena.tld/username/profil
new NetteRouteMock('//app.[!<domain [a-zA-Z0-9-]+>].[!<tld [a-zA-Z0-9-]+>]/[!<locale [a-z]{2,4}>/]/<user>/<action>', array(
'module' => 'Application',
'presenter' => 'Profile',
'action' => 'default',
'locale' => array(
Route::VALUE => 'en',
'fixity' => Route::CONSTANT,
)
));
a taky bych chtěl mít routu
http://domena.tld/modul/akce
new NetteRouteMock('//app.[!<domain [a-zA-Z0-9-]+>].[!<tld [a-zA-Z0-9-]+>]/[!<locale [a-z]{2,4}>/]/<presenter>/<action>', array(
'module' => 'Application',
'presenter' => 'Default',
'action' => 'default',
'locale' => array(
Route::VALUE => 'en',
'fixity' => Route::CONSTANT,
)
));
a chci aby ta první byla zpracována jen pokud se podaří najít uživatele podle jeho ursername, pokud se nepodaří najít, tak ať je routa přeskočena a zpracuje se druhá.
Editoval akadlec (7. 3. 2014 13:03)
- David Matějka
- Moderator | 6445
jj, FALSE je z hlediska Route validni hodnota. Pro zamitnuti pouzivej vzdy NULL
- akadlec
- Člen | 1326
tak asi něco dělám blbě, vrátím ve filter_in null ale stejnak mě to tu routu bere. Když se podívám do debugbaru na routy, tak u ní vidím yes a hned za ní mám další routu která by to měla obsloužit a u ní je may takže routy jsou asi ok. Ten parametr na základě kterého se má routa přeskočit taky ukazuje NULL hodnotu. Je potřeba nastavit ještě nějaký parametr?
$list[] = new NetteRouteMock('[!<locale [a-z]{2,4}>/]mailbox[/<mailbox>]', array(
'module' => 'Application',
'presenter' => 'Default',
'action' => 'default',
'mailbox' => array(
Route::FILTER_OUT => 'MailboxModule\Router\FoldersRouter::getFolderSlugById',
Route::FILTER_IN => 'MailboxModule\Router\FoldersRouter::getFolderIdBySlug'
),
'locale' => array(
Route::VALUE => 'en',
'fixity' => Route::CONSTANT,
)
));
$list[] = new NetteRouteMock('[!<locale [a-z]{2,4}>/]mailbox/<presenter>[/<action>][/<id>]', array(
'module' => 'Application',
'presenter' => 'Default',
'action' => 'default',
'locale' => array(
Route::VALUE => 'en',
'fixity' => Route::CONSTANT,
)
));
url je:
http://domain.tld/en/mailbox/settings/
a router ukazuje:
yes
Route [!<locale [a-z]{2,4}>/]mailbox[/<mailbox>]
module = Application
presenter = Default
action = default
mailbox = NULL
locale = en
Mailbox:Application:Default:default
locale = en
mailbox = NULL
may
Route [!<locale [a-z]{2,4}>/]mailbox/<presenter>[/<action>][/<id>]
module = Application
presenter = Default
action = default
locale = en
id = NULL
Mailbox:Application:Settings:default
locale = en
id = NULL
- Jan Tvrdík
- Nette guru | 2595
<mailbox>
nesmí být volitelný parametr, nebo bys musel
použít výrazně mocnější globální filtry.
- Jan Tvrdík
- Nette guru | 2595
Můžu se ještě zeptat, k čemu si myslíš, že slouží to
'fixity' => Route::CONSTANT
?
- Michal Vyšinský
- Člen | 608
@Jan Tvrdík: K čemu slouží Route::CONSTANT? Vidím tuto konstantu poprvé :)
Editoval Michal Vyšinský (20. 3. 2014 9:57)