iba <id> pri určitom presenteri a akcií
- iNviNho
- Člen | 352
Ahojte,
Snažím sa docieliť mať pri Presenter/action/id, ktorá keď je instruktori/zobrazit-instruktora/1, aby bola iba tá 1ka, alebo teda v mojom prípade mám filter, takže napríklad 1vladovrab, napríklad www.foo.sk/1vladovrab
<?php
$router[] = new Route('<id>', array(
'presenter' => 'Instruktori',
'action' => 'zobrazitInstruktora',
'id' => array(
Route::FILTER_STRICT => TRUE,
Route::FILTER_IN => function ($id) use ($instruktori) {
if (is_numeric($id)) {
return $id;
} else {
$vysledok = array_search($id, $instruktori);
return $vysledok;
}
},
Route::FILTER_OUT => function ($id) use ($instruktori) {
if (!is_numeric($id)) {
return $id;
} else {
$vysledok = $instruktori[$id];
return $vysledok;
}
}
)));
?>
Samozrejme, problém nastane, ked napríklad kliknem na Kontaktujte nás, ktorý je pod KontaktPresenter a šablona je default, takže ho zobrazí ako www.foo.sk/kontakt a matchne sa mi tá moja routa a logicky hodí chybu, kedže to ID sa vo filtre nenachádza.
Napadá ma riešenie napísať pre kontakt osobitnú routu a pozrieť celú appku a tam kde bude treba napísať routu, tak tam ju napíšem, ale toto riešenie sa mi moc nepozdáva …
Čítal som aj na fore niečo ohľadom FILTER_STRICT a FILTER_TABLE, ale neviem ..
Je možnosť niekde tam spraviť, že ak sa nereturne id, tak prejde na iné routy?
ĎakujeM!
- iNviNho
- Člen | 352
Našiel som teda na fóre, že ak filter in vráti return null, pokračuje sa v hladani inych route, takže toto spravilo trick
<?php
Route::FILTER_IN => function ($id) use ($instruktori) {
if (is_numeric($id)) {
return $id;
} else {
$vysledok = array_search($id, $instruktori);
if ($vysledok == FALSE) {
return null;
} else {
return $vysledok;
}
}
}
?>