Router vytvorí link, na ktorý potom reaguje #404 No route for HTTP request
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- OKweb
- Člen | 12
Ahojte,
poprosím o pomoc s nasledovným problémom. V RouterFactory mám nasledovné routy:
$router[] = new Route(
'//shop.avg.sk/admin/[<presenter ^(?!Product).*>/[<action>/]]',
array(
'presenter' => 'Admin',
'action' => 'default'
)
);
$router[] = new Route(
'//shop.avg.sk/<slug>/',
array(
'presenter' => 'Product',
'action' => 'default'
)
);
V prvej route cez regulárny výraz vyraďujem výskyt slova „Product“, lebo pre prezentáciu produktov chcem špeciálne linky, ktoré sú definované v druhej route. Tie aj fungujú v poriadku, generuje ich aj dajú sa použiť. Rovnako správne funguje Admin:default a http://shop.avg.sk/admin/.
Problém mám, že {link Cisla:default} vygeneruje síce správny link http://shop.avg.sk/admin/cisla/, keď ho však otvorím, zahlási #404 No route for HTTP request.
Nevedel by mi niekto, prosím, poradiť, kde môže byť chyba? Ďakujem!
Editoval OKweb (10. 2. 2015 17:57)
- OKweb
- Člen | 12
Obišiel som to takto:
$router[] = new Route(
'//shop.avg.sk/admin/[<presenter=Admin>/[<action=default>/]]',
array(
'presenter' => array(
Route::FILTER_IN => function($presenter) {
if (strtolower($presenter) == 'product')
return null;
else
return strtolower($presenter);
},
Route::FILTER_OUT => function($presenter) {
if (strtolower($presenter) == 'product')
return null;
else
return strtolower($presenter);
}
)
)
);
$router[] = new Route(
'//shop.avg.sk/<slug>/',
array(
'presenter' => 'Product',
'action' => 'default'
)
);