代码之家  ›  专栏  ›  技术社区  ›  davethegr8 Community Driven Business

cakephp:我如何将所有丢失的控制器/操作调用路由到单个常规错误页?

  •  8
  • davethegr8 Community Driven Business  · 技术社区  · 15 年前

    我有一个cakephp应用程序,我正在尝试为 Pages::404 当cake遇到任何错误(缺少控制器、操作等)时,函数(和相应的视图)。

    最好的方法是什么?

    4 回复  |  直到 15 年前
        1
  •  25
  •   deceze    15 年前

    对于缺少的方法或控制器,cake会自动抛出404错误。在调试模式下,此错误采用包含指令的详细错误消息的形式,如:

    缺少控制器

    错误:找不到FooController。

    错误:在以下文件中创建foo controller类:>app/controllers/foo_controller.php

    注意:如果要自定义此错误消息,请创建app/views/errors/missing洇controller.ctp

    在生产模式下( debug = 0 )信息如下:

    找不到

    错误:在此服务器上找不到请求的地址“/foo”。

    这些错误页在中定义 cake/libs/view/errors/ . 正如debug模式中的消息所说,您可以创建自己的自定义错误页(使用与 cake/ 目录)中 app/views/errors/ .

    如果要在出现错误时执行自定义函数,最好将其放入 AppError 控制器,如中所述 Error Handling .

        2
  •  10
  •   Andreas Wong    13 年前

    步骤1:在app_controller.php中添加两个函数

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

    第2步:进入 views\layouts\ 创造 error.ctp 包含echo$内容用于布局;

    步骤:3英寸 views\errors\ 制作 missing_action.ctp 根据需要定制页面 我的PHP代码是:

     echo $html->image('404-not-found-1-3.jpg');
    
        3
  •  0
  •   Andreas Wong    13 年前

    当您试图重定向到404错误页时,您是否在控制器中?

    如果是这样的话,你可以这样绕过这个问题:

    从蛋糕复制并粘贴错误布局(error404.ctp) 核心库目录到您的应用程序/视图/错误中/

    然后在控制器内遇到错误时添加以下行。

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

    哦,另一种处理方法是在app/config中编辑routes.php文件。

    CakePHP Official site Routes-Configuration

    我现在没有cakephp的工作副本,所以我将在这里描述基本逻辑(您可以在routes.php文件中做什么)。

    使用特定的URL模式重定向流量(例如, http://yourwebsite/validController/validFunction/validParam )分别到达相应的目的地。 将所有其他流量(缺少控制器、模型、视图等)重定向到404页。

    希望有帮助:)

        4
  •  0
  •   Lundin    10 年前

    请在app/controller文件夹中添加post controller.php类,不要发布controller.php。这只意味着你必须像创建类名一样创建它。