我们用CakePHP做的系统,会有不同的模板。当出现错误页面(如404)时,我们希望404页面仍然是基于当前用户访问的模板进行展示的(头部、尾部等)。但建立了error404.ctp后发现并不会根据当前的模板展示(theme),后来调试发现,CakeErrorController 并没有执行beforeFilter()。解决方法:

1. 在app_controller.php添加

function __construct() {
    parent::__construct();
    if ($this->name == 'CakeError') {
        $this->constructClasses();
        $this->beforeFilter();
    }
}
2. 在app下创建error.php
<?php
class AppError extends ErrorHandler {
	function error404($params) {
		$this->controller->beforeFilter();
		parent::error404($params);
	}
}
?>

这样,就搞定了。

Today on history:

  1. 2010:  centos上简单安装svn(subversion)(0)