Bad*_*sie 31 php cakephp http-status-code-404 cakephp-2.0
我读到AppError类现在是为了向后兼容,应该使用Exceptions.如何为404错误或完全自定义错误等内容创建自定义错误页面?
And*_*kov 46
试试这个:
/app/Config/core.php
异常渲染需要设置为AppExceptionRender.例:
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'AppExceptionRenderer',
'log' => true
));
Run Code Online (Sandbox Code Playgroud)
/app/Controller/ErrorsController.php
class ErrorsController extends AppController {
public $name = 'Errors';
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('error404');
}
public function error404() {
//$this->layout = 'default';
}
}
Run Code Online (Sandbox Code Playgroud)
/app/Lib/Error/AppExceptionRenderer.php
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function notFound($error) {
$this->controller->redirect(array('controller' => 'errors', 'action' => 'error404'));
}
}
Run Code Online (Sandbox Code Playgroud)
/app/View/Errors/error404.ctp
<div class="inner404">
<h2>404 Error - Page Not Found</h2>
</div>
Run Code Online (Sandbox Code Playgroud)
将其插入您需要的位置: throw new NotFoundException();
如果您只想使用其他布局而不是默认布局,只需$this->layout = 'your_error_layout';在error400.ctp(或您在View/Errors下创建的任何其他错误页面)中添加.
创建名称为404或任何内容的布局,并在app控制器中使用
function _setErrorLayout() {
if ($this->name == 'CakeError') {
$this->layout = '404';
}
}
function beforeRender () {
$this->_setErrorLayout();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39034 次 |
| 最近记录: |