0

我正在尝试通过扩展 ExceptionRenderer 在 CakePHP 2.0 中创建自定义 404 页面。一切工作正常,除非我在 View Cake 中输出 HTML 标记字符串时对 HTML 实体进行了不必要的编码。我怎样才能防止这种情况发生?

在我的渲染器中,我有:-

class AppExceptionRenderer extends ExceptionRenderer {
    public function missingController($error) {
        $this->controller->set('test', '<p>Test</p>');
        header('HTTP/1.1 404 Not Found');
        $this->controller->render('/Errors/error404', 'default');
        $this->controller->set('title_for_layout', 'Page Not Found');
        $this->controller->response->send();
    }
}

在视图中(View/Error/error404.ctp):-

<?php echo $test ?>

这输出&lt;test&gt;而不是<p>test</p>.

在我的实际代码test中,将由数据库中的内容设置,因为这是一个 CMS 驱动的站点。我只是test以上面的渲染器代码为例(并证明代码的行为与我观察到的一样)。

4

1 回答 1

3

您不应该在 PHP 中使用 HTML,您应该在视图文件中编写任何标记。

我没有遇到过需要在 PHP 代码中编写标记的情况,但是如果您没有其他方法可以解决它,您始终可以html_entity_decode()在视图中使用该函数。

不幸的是,我不知道如何阻止 Cake 像你想要的那样自动对其进行编码。

于 2012-12-11T12:53:08.903 回答