iba <id> pri určitom presenteri a akcií

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

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

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;
					}
                                    }
                                }
?>