До недавнего времени у меня был контроллер обработчика маршрута, через который проходили все запросы. Это сделано для того, чтобы я мог направлять определенные элементы на определенные страницы на основе записей в каталоге. Однако по какой-то причине он недавно перестал работать и выдает мне следующую ошибку:
ErrorException [ Warning ]: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Empty regular expression
Это происходит из функции match () в файле route.php.
До тех пор, пока этот класс не был вызван, я заметил, что переменная $ uri содержит строку, однако однажды в этой функции она превращается в NULL, который пропускает ошибку.
// Routes for product items
foreach($items as $item)
{
Route::set($item->seoUrl, $item->seoUrl)
->defaults(array(
'controller' => 'item',
'action' => 'index',
'id' => $item->id,
));
}
// Error
Route::set('error', 'error(/<action>(/<id>))', array('id' => '.+'))
->defaults(array(
'controller' => 'error',
'action' => '404',
'id' => FALSE,
));
// Standard - normal Kohana behaviour
Route::set('standard', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'catalogue',
'action' => 'index',
));
// RouteHandler Reset - otherwise continuous loop
Route::set('routeHandler', '£€%')
->defaults(array(
'controller' => 'routeHandler',
'action' => 'index',
));
$uri = $this->request->param('uri');
$request = new Request($uri);
echo $request->execute()
->send_headers()
->response;
Маршруты для товаров еще работают. Что заставляет меня верить, что это стандартный маршрут, вызывающий расстройство. Маршрут сброса должен быть там, иначе я получу постоянный цикл через routeHandler.
Странно, что все это работало, и, насколько мне известно, в этом сценарии ничего не изменилось.
Любые идеи, хотя были бы очень признательны.