到目前为止,我所拥有的是:
应用/配置/ core.php中
Configure::write('debug', 2);
应用/配置/ bootstrap.php中
CakePlugin::loadAll(array('bootstrap' => true));
应用/插件/核心/ bootstrap.php中
Configure::write('Exception.renderer', 'Core.AppExceptionRenderer');
应用/插件/核心/ LIB /错误/ AppExceptionRenderer.php
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function notFound($error) {
echo $error->getMessage();
}
public function missingController($error) {
echo $error->getMessage();
}
}
那些简单的回声起作用。
现在我希望每个错误函数都呈现(不是重定向!)来自Core
插件的视图,例如app/Plugin/Core/View/Pages/error
。
我不想呈现静态页面(例如/Errors/error400.ctp
),因为用户可以从管理面板编辑错误页面的内容。
错误页面布局应在名为Default
的主题中设置。
答案 0 :(得分:1)
我想这就是你要做的,设置布局&视图在beforeFilter方法中呈现 -
class AppExceptionRenderer extends ExceptionRenderer {
public function beforeFilter() {
$this->layout = 'YOUR_LAYOUT'; // Setting the default layout to your layout
$this->view = '../../Plugin/Core/View/Pages/error'; //Check this path to your ctp file
}
...
...
}
答案 1 :(得分:0)
您可以像这样设置自定义错误的视图
应用/插件/核心/ LIB /错误/ AppExceptionRenderer.php 强>
<?php
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function notFound($error) {
$this->controller->redirect(array('controller' => 'custom_errors', 'action' => 'not_found'));
}
public function missingController($error) {
$this->controller->redirect(array('controller' => 'custom_errors', 'action' => 'missing_controller'));
}
}
应用/控制器/ CustomErrorsController.php 强>
<?php
App::uses('Controller', 'Controller');
class CustomErrorsController extends Controller {
public function beforeFilter(){
}
public function not_found(){
// your coding goes here.
}
public function missing_controller(){
// your coding goes here.
}
}
您可以指定操作的视图。