CakePHP контроллер / вопрос действия с http://mysite.com/mycontroller/absentaction - PullRequest
0 голосов
/ 01 сентября 2011

Предположим, кто-то нажал на URL http://mysite.com/comments/view/13

Но это отсутствие отсутствует в контроллере комментариев.

Тогда получится обычная ошибка, подобная этой =>

 Error:  The action view is not defined in controller CommentsController

Error: Create CommentsController::view() in file: app/controllers/comments_controller.php.

<?php
class CommentsController extends AppController {

    var $name = 'Comments';


    function view() {

    }

}
?>

Notice: If you want to customize this error message, create app/views/errors/missing_action.ctp

Что я пытаюсь сделать, так это то, что если кто-то нажмет URL http://mysite.com/comments/view/13, а если действие отсутствует, оно будет перенаправлено на http://mysite.com/.

Как я могу сделать это для неизвестного / отсутствующегодействие

Ответы [ 4 ]

2 голосов
/ 01 сентября 2011

Этот трюк на самом деле работает довольно хорошо. Вам нужно создать файл app / app_error.php

 <?php


class AppError extends ErrorHandler {

    public function error404($params){
        extract($params);

        if(!isset($url)){
            $url = $action;
        }

        if(!isset($message)){
            $message ="";
        }

        if(!isset($base)){
            $base = "";
        }

        $this->controller->redirect(array('controller'=>'pages','action'=>'home'));
        //Or the page you want...

    }

}


?>

Как это работает?

Фактически он переопределяет функцию error404() из ErrorHandler и перенаправляет пользователя с $this->controller->redict();

1 голос
/ 01 сентября 2011

Обратите внимание, что внизу сообщения об ошибке написано, что вы можете настроить его, создав app/views/errors/missing_action.ctp. Так что все, что вам нужно сделать, это создать этот файл .ctp и включить в него перенаправление следующим образом:

<?php
header( 'Location: http://mysite.com' ) ;
?>
0 голосов
/ 01 сентября 2011

Вы можете настроить app / views / errors / missing_action.ctp или отключить отладку в app / config / core.php

0 голосов
/ 01 сентября 2011

Это говорит прямо в ошибке ...

создать приложение / views / errors / missing_action.ctp

И это то, что вы должны сделать ...

Попробуйте использовать заголовок в missing_action.ctp, чтобы перенаправить туда, куда вы хотите перейти на страницу.

...