Zacyklení absolutní routy s nepovinnými parametry .. kvůli lomítku
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Oggy
- Člen | 306
PHP 5.3.10–1ubuntu3.1
Apache/2.2.22 (Ubuntu)
Nette Framework 2.0.3 (revision eb558ae released on 2012–04–04)
Našel jsem zvláštní chování routeru.. pokud je maska routy absolutní s nepovinnými parametry docházelo ke smyčce, vyřešilo to nestandardní lomítko na konci..
více v kódu:
//ESHOP KATEGORIE
$eshopRouter[] = $routee = new FilterRoute('//eshop.sam73.<lang>[/kategorie:<category_id>][/sortiment:<assortment_id>][/barva:<colorGroup_id>][/kolekce:<collection_id>]/', array(
'lang' => array(
//Route::VALUE => 'cs',
Route::FILTER_IN => callback('AppRouter::langIn'),
Route::FILTER_OUT => callback('AppRouter::langOut'),
),
'presenter' => 'Category',
'action' => 'default',
'category_id' => NULL,
'assortment_id' => NULL,
'colorGroup_id' => NULL,
'collection_id' => NULL
));
$routee->addFilter('category_id', callback(array($container->modelLoader->category, 'urlToId')), callback(array($container->modelLoader->category, 'IdToUrl')));
$routee->addFilter('assortment_id', callback(array($container->modelLoader->assortment, 'urlToId')), callback(array($container->modelLoader->assortment, 'IdToUrl')));
$routee->addFilter('colorGroup_id', callback(array($container->modelLoader->colorGroup, 'urlToId')), callback(array($container->modelLoader->colorGroup, 'IdToUrl')));
$routee->addFilter('collection_id', callback(array($container->modelLoader->collection, 'urlToId')), callback(array($container->modelLoader->collection, 'IdToUrl')));
Důležité je to lomítko na konci masky (umístení na konec není důležité).. Když tam lomítko nebylo a všechny parametry byly NULL.. docházelo k zacyklení.