Как перенаправить, если контроллер не найден? (CakePHP) - PullRequest
0 голосов
/ 07 февраля 2012

Это мой файл маршрутов. Как я могу перенаправить в массив ('controller' => 'pages', 'action' => 'display', 'home'), если контроллер не найден?

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('/login', array("controller"=>"user","action"=>"login"));
Router::connect('/settings', array("controller"=>"user","action"=>"settings"));
Router::connect('/logout', array("controller"=>"user","action"=>"logout"));
Router::connect('/video', array("controller"=>"video","action"=>"index"));
Router::connect('/video/page/*', array("controller"=>"video","action"=>"page"));
Router::connect('/video/*', array("controller"=>"video","action"=>"view")); 
Router::connect('/upcoming', array("controller"=>"user","action"=>"upcoming"));

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

Что вам нужно, это здесь объяснено аккуратно и прекрасно работает> Надеюсь, это поможет вам.

OR

Go ЗДЕСЬ

1 голос
/ 07 февраля 2012

Это довольно просто. Создайте файл app_error.php в каталоге / app (точно так же, как для app_model.php или app_controller.php)

Как только это будет сделано, введите следующее:

<?php
class AppError extends ErrorHandler {


    function missingController($params) {
        extract($params, EXTR_OVERWRITE);

        $this->controller->redirect('/');
    }    


}

Теперь это должно решить вашу проблему. Если вам нужно вызвать компоненты и beforeFilters / Renders, вы можете вызвать их из конструктора.

1 голос
/ 07 февраля 2012

Вам следует создать собственный обработчик исключений, который перенаправит пользователя обратно на домашнюю страницу. См. документацию по этой теме.

Возможно, что-то вроде этого (не проверено, но только для того, чтобы дать вам представление, куда идти):

class AppErrorHandler {
    public static function handleException($error) {
        if ($error instanceof MissingControllerException) {
            // Redirect home, $this->redirect will probably not work,
            // since the Error Handler doesn't extend the AppController.
            header('Location: /');
            exit;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...