我想为页面找不到404页面的不同布局。我怎样才能为该页面设置不同的布局?Cakephp - 如何让错误页面有自己的布局?
回答
从IRC莎凡特帮了我和他在app_controller使用beforeRender(){}
建议
// Before Render
function beforeRender() {
if($this->name == 'CakeError') {
//$this->layout = 'error';
}
}
CakeError是错误的统称:d
我知道这个简单的方法是在你的AppController
创建这个函数:但是
function appError($method, $messages)
{
}
那么你可以做任何你想要的错误,显示它你喜欢,或不显示它在所有,发送电子邮件等。(我不知道这方法,如果仍然有效。)
也有在您的应用程序根创建app_error.php
的选项,在它class AppError extends ErrorHandler
,它使您能够覆盖各种错误。但我还没有这样做,所以我不能告诉你更多关于它的信息。
请参阅cake/libs/error.php和cake/libs/object.php,当然还有The Book了解更多信息。忘记提及,一旦你发现错误,没有什么能够阻止你 - 例如 - 将错误存储在会话中,重定向到你的“错误处理控制器”,然后显示在你的控制器中你要。
感谢很多文件,并设置布局:d – 2010-10-10 13:04:00
更好地在您的应用程序创建一个error.php文件文件夹
class AppError extends ErrorHandler {
function error404($params) {
$this->controller->layout = 'error';
parent::error404($params);
}
}
这样就可以避免在每个页面如果测试渲染学者解决方案引入了
在CakePHP 2.2.2,我改变了ExceptionRenderer在core.php中与我自己的,就像这样:
应用程序/配置/ core.php中:
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'MyExceptionRenderer', // this is ExceptionRenderer by default
'log' => true
));
应用程序/库/错误/ MyExceptionRenderer。 PHP:
App::uses('ExceptionRenderer', 'Error');
class MyExceptionRenderer extends ExceptionRenderer {
protected function _outputMessage($template) {
$this->controller->layout = 'error';
parent::_outputMessage($template);
}
}
无法满足这个要求,它胜过了我复制每个错误视图并将布局设置为顶部“错误”的旧方法。 – Matthew 2014-03-08 13:31:29
我的解决方案为CakePHP的2.3
变化率T他core.php中的ExceptionRenderer使用您自己的渲染器。
应用程序/配置/ core.php中:
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'MyExceptionRenderer',
'log' => true
));
应用程序/库/错误/ MyExceptionRenderer.php:
App::uses('ExceptionRenderer', 'Error');
class MyExceptionRenderer extends ExceptionRenderer
{
/**
* Overrided, to always use a bare controller.
*
* @param Exception $exception The exception to get a controller for.
* @return Controller
*/
protected function _getController($exception) {
if (!$request = Router::getRequest(true)) {
$request = new CakeRequest();
}
$response = new CakeResponse(array('charset' => Configure::read('App.encoding')));
$controller = new Controller($request, $response);
$controller->viewPath = 'Errors';
$controller->layout = 'error';
return $controller;
}
}
这种方法的优点是,它保证了从AppController中抛出的异常渲染异常时不会导致无限循环。每次强制执行异常消息的基本呈现。
- 1. 如何让用户定义自己的页面布局?
- 2. CakePHP的自定义闪布局错误
- 3. 如何发布自己的Facebook页面
- 4. CakePHP Plugin的自定义错误页面
- 5. CakePHP 2.1中所有错误的自定义布局
- 6. 如何自己的页面
- 7. Cakephp自定义错误页面
- 8. Cakephp错误自定义页面
- 9. 如何布局我自己的UITableViewCell
- 10. 错误添加自己的自定义视图XML布局
- 11. 如何更改modules.config中配置的错误页面的布局?
- 12. 具有自己的页面
- 13. 如何将django链接到我自己的404错误页面?
- 14. 如何拥有静态页面布局
- 15. LiveTiles自己的布局
- 16. CakePHP - 错误页面列表
- 17. 我该如何让android布局页边距自动调整为页面长度
- 18. 如何让用户在Django中构建自己的页面?
- 19. CakePHP表单验证错误布局
- 20. 页面布局
- 21. Cakephp插件布局应用于所有页面
- 22. 是否可以在错误页面中显示默认布局?
- 23. 自动布局错误
- 24. Facebook API:如何发布到我自己的墙上页面?
- 25. 如何使用应用发布到我自己的Facebook页面?
- 26. 如何以编程方式发布到自己的Facebook页面?
- 27. 没有自定义404错误页面
- 28. 如何为ASP.NET MVC3创建全局自定义错误页面?
- 29. 如何构建HTML页面的布局?
- 30. 如何设置ViewPager页面的布局?
这种方法不再使用CakePHP 2.x的有效我不知道现在该怎么做......大声笑 – 2012-06-29 19:15:01
我可以证实这种方法适用于Cake 2.2.1。 – bancer 2012-09-13 09:14:33
我没有在Cake 2.2.1中确认。我调试了beforeRender中的$ this-> layout,我得到了预期的'public_layout',但它仍然以default.ctp呈现。 DEBUG被设置为0. – 2012-10-23 11:20:04