Кохана 3 маршрута - пустое регулярное выражение - PullRequest
0 голосов
/ 23 мая 2011

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

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.

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

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

1 Ответ

0 голосов
/ 23 мая 2011

Решено.

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

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

...