Cakephp: How would I route all missing controller/action calls to a single, general error page?

前端 未结 4 1907
夕颜
夕颜 2020-12-16 22:02

I\'ve got a cakephp app that I\'m trying to get to serve up the Pages::404 function (and corresponding view) whenever Cake encounters any error (missing control

相关标签:
4条回答
  • 2020-12-16 22:17

    Are you in the controller when you are trying to redirect to the 404 error page?

    Well if that is the case, you can walk around the problem like this:

    Copy and paste the error layout (error404.ctp) from the cake core library directory into yours app/views/errors/

    Then add the following line whenever you encounter an error inside a controller.

    $this->cakeError('error404',array(array('url'=>'/'))); 
    

    Oh, another way to handle this is to edit the routes.php file in app/config

    CakePHP Official site Routes-Configuration

    I don't have a working copy of CakePHP at the moment, so I would just describe the basic logic here(what you can do inside the routes.php file)

    Redirect traffic with specific url patterns(say, http://yourwebsite/validController/validFunction/validParam) to their corresponding destinations respectively. Redirect all other traffic (missing controller, model, view, etc) to 404 page.

    Hope that helps:)

    0 讨论(0)
  • 2020-12-16 22:18

    Please add a class PostController.php not post_controller.php in the app/controller folder. It just mean that You have to create as like its class name.

    0 讨论(0)
  • 2020-12-16 22:30

    Step 1:In app_controller.php add two functions

    function _setErrorLayout() {  
         if ($this->name == 'CakeError') {  
            $this->layout = 'error';  
         }    
    }              
    
    function beforeRender () {  
          $this->_setErrorLayout();
        }
    }
    

    Step2: In views\layouts\ create error.ctp containing echo $content_for_layout;

    step:3 In views\errors\ make missing_action.ctp and customize the page as you need my PHP code was:

     echo $html->image('404-not-found-1-3.jpg');
    
    0 讨论(0)
  • 2020-12-16 22:31

    Cake automatically throws a 404 error for missing methods or controllers. While in debug mode, this error takes the form of a detailed error message containing instructions, like:

    Missing Controller

    Error: FooController could not be found.

    Error: Create the class FooController below in file: > app/controllers/foo_controller.php

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

    In production mode (debug = 0) the message just looks like this:

    Not Found

    Error: The requested address '/foo' was not found on this server.

    These error pages are defined in cake/libs/view/errors/. As the message in debug mode says, you can create your own, custom error pages (using the same name as the ones in the cake/ directory) in app/views/errors/.

    If you want to execute a custom function on errors, you'll best put it in the AppError Controller as described in Error Handling.

    0 讨论(0)
提交回复
热议问题