我正在开发一个使用主题布局的应用程序,我也需要为所有错误页面使用自定义主题。
查看the docs,我发现我可以使用
轻松更改布局$this->layout = 'mylayout';
在错误页面本身,但我也需要更改主题。我试过
$this->theme = 'mytheme';
但错误页面仍然使用默认主题,所以我猜这不是设置它的正确方法。
为错误页面设置主题的正确方法是什么?
答案 0 :(得分:2)
Themes最容易通过node (around:...)
事件或早期CakePHP版本通过way
属性设置。
默认的异常渲染器使用新的控制器实例来处理错误,因此您可以例如
一个选项是创建一个自定义错误控制器,您可以像在常规控制器中一样设置主题。默认情况下,CakePHP将使用Controller.beforeRender
(如果存在),因此您需要做的就是创建控制器。
<强> SRC /控制器/ ErrorController.php 强>
Controller::$theme
完成后,所有例外现在都应使用\App\Controller\ErrorController
主题。
另见
您还可以创建自定义/扩展异常渲染器,并覆盖namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Event\Event;
class ErrorController extends Controller
{
public function beforeRender(Event $event)
{
$this->viewBuilder()->theme('ErrorThemeName');
}
}
,并为可以设置主题的ErrorThemeName
添加适当的侦听器。
<强>的src /错误/ AppExceptionRenderer.php 强>
ExceptionRenderer::_getController()
<强>配置/ app.php 强>
Controller.beforeRender
另见
<强> Cookbook > Error & Exception Handling > Using the exceptionRenderer Option of the Default Handler 强>