Маршруты Kohana 3 - пустое регулярное выражение

До недавнего времени у меня был контроллер обработчика маршрутов, через который проходят все запросы. Это сделано для того, чтобы я мог направлять определенные элементы на определенные страницы на основе записей в каталоге. Однако по какой-то причине он недавно перестал работать и выдает следующую ошибку:

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.

Странно то, что все это работало, и, насколько мне известно, в этом сценарии ничего не изменилось.

Любые идеи, однако, были бы очень признательны.


person diggersworld    schedule 23.05.2011    source источник


Ответы (1)


Решил это.

Один из элементов имел seoUrl в основном NULL, поэтому, имея его в качестве маршрута, он путал все следующие маршруты, установленные в этом контроллере.

Добавили проверку, чтобы убедиться, что $item->seoURL не пуст.

person diggersworld    schedule 23.05.2011