CakePHP 2.0 中的错误处理。转义 viewVars [关闭]

2024-04-22

我在 Cake 2 中遇到了一个奇怪的错误问题,而在 1.3 中从未遇到过。

当出现一些异常时(即未发现异常) Cake 的错误处理开始..默认情况下它会实例化蛋糕错误控制器并做所有这些事情(参见source https://github.com/cakephp/cakephp/blob/166806774039bda71d9e411213b9c1b069241a52/lib/Cake/Controller/CakeErrorController.php) 和.. 转义viewVars。但我在我的中设置了一些视图变量应用程序控制器's 渲染前我不希望它们被转义,因为它们包含 html 并且它们应该在布局中呈现。这种行为的原因是什么?我怎样才能告诉 Cake 不要这样做呢?

谢谢。

Update:

出色地。我制定了一些解决方案:

我创建了控制器/AppErrorController.php:

App::uses('CakeErrorController', 'Controller');
    
class AppErrorController extends CakeErrorController {
    public function beforeRender() {
        AppController::beforeRender();
    }
}

和库/错误/AppExceptionRenderer.php:

App::uses('ExceptionRenderer', 'Error');
    
class AppExceptionRenderer extends ExceptionRenderer {
    protected function _getController($exception) {
        App::uses('AppErrorController', 'Controller');
        if (!$request = Router::getRequest(false)) {
            $request = new CakeRequest();
        }
        $response = new CakeResponse(array('charset' => Configure::read('App.encoding')));
        try {
            $controller = new AppErrorController($request, $response);
        } catch (Exception $e) {
            $controller = new Controller($request, $response);
            $controller->viewPath = 'Errors';
        }
        return $controller;
    }
}

并在配置/core.php I set:

Configure::write('Exception', array(
    ...,
    'renderer' => 'AppExceptionRenderer',
    ...
));

看起来它按预期工作,但是有没有更优雅的解决方案?

谢谢。


这可能也是因为 CakeErrorController 用于all异常——因此框架可以针对任何错误传递任何消息,而不必担心 HTML 注入或乱码输出。我假设这只是关于可靠的输出,因为 Cake 文档将控制器描述为“[省略]一些正常的回调以帮助确保错误始终显示” http://book.cakephp.org/2.0/en/development/exceptions.html?highlight=cakeerrorcontroller#creating-a-custom-controller-to-handle-exceptions。它是一个针对特定用途的精益、精简的控制器。

不幸的是,这意味着他们已经对 CakeErrorController 进行了硬编码beforeRender方法,所以没有办法将其关闭。我能想到的唯一简单的选择是 hacky...

  1. 创建使用 PHP 的自定义错误视图htmlspecialchars_decod() http://us.php.net/htmlspecialchars_decode将转义文本转换回未转义文本的函数。 (如果你想彻底,你还可以检查编码等。基本上反转什么h() http://us.php.net/htmlspecialchars_decode对你的字符串做了)
  2. 将您的消息转换为对象(因为beforeRender不是逃避物体)。

幸运的是,文档中提供了适当的解决方法,并且您已经弄清楚了。

感觉只是将一些 HTML 放入您的视图中就需要做很多工作,因为这样做需要做很多工作。 MVC 应该有助于分离您的关注点,但是您通过在控制器而不是视图中创建 HTML 来破坏这种分离。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP 2.0 中的错误处理。转义 viewVars [关闭] 的相关文章

  • 如何使用 Moq 模拟 SoapException 来对错误处理进行单元测试

    我继承了一个小型控制台应用程序 用于调用 SOAP Web 服务 这是一个以各种方式记录异常的嵌套 try catch 的悲剧性混乱 我想围绕抛出 SoapException 时它的行为进行一些测试覆盖 问题 当我无法模拟接口并且无法将属性
  • 来自模型和控制器的 cakephp 验证

    我已经在模型中进行了验证 另外 我在控制器中进行了一些验证以检查验证码 此后 应用程序不再显示模型验证错误 如果我评论控制器代码 模型验证工作正常并显示错误 两个都不行 型号代码 示例 class User extends AppModel
  • cakephp - 获取表名称及其列详细信息

    有谁知道如何从模型名称获取表名称 另外我想获取该模型 表名称的所有列名称及其类型 是否有可能获得给定型号名称的此类详细信息 Thanks 表名 要获取该表 请参阅 this gt Model gt table 或者检查类变量的模型 useT
  • excel vba-重写循环中公式返回的错误(类型不匹配)

    我的工作表的 H 列中是一个 vlookup 公式 H 列中的某些行返回 n a 错误 我似乎无法让 VBA 检查 H 列中的错误并将其替换为字符串 这是我到目前为止所拥有的 For Each F In activeworkbook Wor
  • 如何使用加密的 DLQ 将重新驱动策略添加到 SNS

    我有一个 SNS 用 KMS 加密 由两个 lambda 订阅 我正在尝试向其中一项订阅添加重新驱动策略 相关 DLQ 已加密 添加重新驱动策略会出现错误 无法检查 Amazon SQS 队列权限 确保队列存在并且您的帐户有权读取队列的属性
  • hadoop map reduce 中的错误处理

    根据文档 有几种方法可以在 MapReduce 中执行错误处理 以下是一些 A 使用枚举的自定义计数器 每个失败记录的增量 b 记录错误并稍后分析 计数器给出失败记录的数量 然而 为了获取失败记录的标识符 可能是其唯一键 以及发生异常的详细
  • VBA Excel 简单错误处理

    我尽可能多地上网查看 除了微软支持网站 该网站由于某种原因在工作中被屏蔽 我试图简单地跳过一个错误 我在这里编写的代码经过简化 但应该以相同的方式工作 我的代码应该做什么 我的一名潜艇在循环中创建形状并命名它们 btn 1 btn 2 等
  • PHP 致命错误

    当 PHP 出现致命错误时 有没有办法让代码继续 而不是退出 例如 我遇到超时致命错误 并且我希望每当它发生时就跳过此任务并继续执行其他任务 在这种情况下 脚本退出 有一种使用输出缓冲的 hack 可以让您记录某些致命错误 但是在发生致命错
  • 基于 GB 且仅限数字的电话号码的正则表达式

    我想要一个仅允许数字电话号码 例如 1234567890 以及 GB 格式号码 例如 123 456 7890 的正则表达式代码 该表达式必须适用于这两种情况 目前我正在使用下面的正则表达式 它只允许 GB 电话号码 d 3 s d 3 s
  • REST API 错误消息是否应该国际化? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在设计 REST API 的错误时 遵循标准 HTTP 代码 4XX 和 5XX 并包含主体 XML JSON 似乎是一个很好的做法 简短的信息
  • .Net MVC 自定义错误页面在 IIS8 中不起作用

    我有一个 NET MVC 应用程序 在使用 IIS 8 的服务器上获取自定义错误页面时遇到问题 在我的应用程序中 我会适当地捕获和抛出异常 并在错误页面上显示一条自定义的消息他们的违规行为 当在调试中通过 VS 运行应用程序时 以及当我在
  • CakePHP TwigView 插件缺少视图错误

    我正在使用 CakePHP 2 4 2 和this https github com predominant TwigView插件由主导 我想将 TwigView 与 CakePHP 一起使用 发现上面的插件与 CakePHP 2 0 兼容
  • JIRA REST API 获取工作日志 - “您无权查看指定问题”

    我想获取 Jira 上指定问题的工作日志 根据这个文件https docs atlassian com jira REST latest d2e774 https docs atlassian com jira REST latest d2
  • 是否使用 PHP 框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经开始用 PHP 编写一些应用程序 并且我对这门语言越来越熟悉 有人告诉我有关 CakePHP 和 CodeIgniter 的信息 我想更好
  • Node.js (Express) 带有路由器的错误处理中间件

    这是我的应用程序结构 app js routes index js The ExpressJS应用程序创建错误处理程序development and production环境 这是来自的代码片段app js app use routes r
  • 由于 AndroidManifest.xml 问题,无法构建 APK

    For some reason whenever I load my project I immediately get the following error 我的代码中AndroidManifest xml
  • Cakephp 验证后,所有表单字段都为空,并出现表单错误

    我有问题 我尝试填写表单 然后单击提交按钮 然后它显示表单错误 但所有文本框字段都变为空白 并且可以显示表单错误 我希望它变得与验证之前相同的值 就像我不想在验证后清除 清空值一样 我做了这样的事情 在视图中 div class regfo
  • Swift:NSError 现在应该被视为遗留问题吗?

    文档和流行博客建议使用 do catch 进行 Swift 错误处理 并处理 ErrorType 枚举或 NSError 实例 ErrorType 枚举和 NSError 实例在 try catch 块中是否互斥 如果没有 如何实现一个同时
  • 用于在 Cakephp 中创建单选按钮的表单助手

    我正在尝试使用 Cakephp 创建一个单选按钮 结果应该类似于 div div
  • CakePHP GROUP 和 COUNT 个项目在列表中返回

    我知道这里有一些类似的问题 但它们都是关于使用时的 Model gt find all 但这不是我正在做的 我正在做的 Model gt find list 这就是工作与不工作之间的区别 给定一组产品 我想找到该组中的所有品牌以及每个品牌的

随机推荐

  • 符号查找错误未定义符号,但所有符号似乎都存在

    可执行文件似乎无法解析链接库中的符号 LD DEBUG libs 的相关输出表明加载了正确的库 6557 usr lib libcharon so 0 error symbol lookup error undefined symbol a
  • 使用 ngx-mat-file-input 从 Angular 将文件上传为 multipart/form-data

    我在用着ngx mat file input 0 检索用户输入的文件 我想将其上传到服务器 端点需要一个多部分文件 我怎样才能做到这一点 0 https www npmjs com package ngx material file inp
  • 内置模块计算最小公倍数

    我目前正在使用一个接受两个数字并使用循环来查找这些数字的最小公倍数的函数 def lcm x y This function takes two integers and returns the L C M Choose the great
  • MySQL order by 在 group by 之前

    这里有很多类似的问题 但我认为没有一个能充分回答这个问题 我将从当前最流行的继续question https stackoverflow com questions 5140785 mysql order before group by如果
  • ANTLR“无法启动调试器。等待连接到远程解析器超时。”

    我在 AntlrWorks 中运行的 ANTLR 语法之一抛出 无法启动调试器 等待连接到远程解析器超时 过去 此消息通常会消失 但此消息会持续存在 在搜索 ANTLR 列表时 例如http www antlr org pipermail
  • 将 A => M[B] 转换为 M[A => B]

    对于一个单子M 是否可以转A gt M B into M A gt B 我尝试过遵循这些类型 但没有成功 这让我认为这是不可能的 但我想我还是会问 另外 搜索 Hooglea gt m b gt m a gt b 没有返回任何东西 所以我没
  • Perl:函数参数不足

    我是 Perl 的新手 目前正在尝试理解提到的错误消息 我有这段代码 仍然主要用于测试目的 usr bin perl use strict use warnings my info autor gt Karryanna jazyk gt c
  • Android ACTION_SHUTDOWN 广播不起作用

    Code public class ShutdownReceiver extends BroadcastReceiver private static final String TAG ShutdownReceiver Override p
  • Javascript“this”被事件监听器覆盖[重复]

    这个问题在这里已经有答案了 我可能做错了什么 但在尝试将一些面向对象编程应用于 Javascript 时 我发现了一些有趣的行为 考虑以下 function Bug element this focusedCell null element
  • jquery导航

    我正在为网站登陆页面创建一个简单的导航 它将用户引导到客户业务的两侧之一 基本上包括当您滚动到一侧时屏幕被分成两半 另一侧淡出 My code HTML div a href retail html Retail a a href resi
  • 使用 C# 以 PDF 形式动态存储和发送 SSRS 报告

    我在 SSRS 中有一份报告 它以 a 作为参数SalesRepCode and Email生成 PDF 收据 如果我使用报告查看器 它就会正常工作 使用 C 我想为每个存在的销售代表自动生成 PDF 一旦呈现 PDF 我想将其存储在文件夹
  • 无法在 Simulator XCode 6.0 中运行应用程序

    从 XCode 5 0 迁移到 XCode 6 0 后 项目无法运行并出现以下错误 An error was encountered while running Domain FBSOpenApplicationErrorDomain Co
  • Firebase 数据库结构 - 需要建议

    我知道这个问题可能被视为基于意见的问题 但是我认为值得讨论正确构建数据库的方法 我在 Swift 中开发 iOS 应用程序 并决定使用 firebase 作为我的后端服务 让我们从应用程序描述开始 该应用程序旨在为图书阅读体验提供跟踪和社交
  • 断言失败时如何继续执行

    我正在使用 Selenium RC 使用 Java 和 eclipse 和 TestNG 框架 我有以下代码片段 assertTrue selenium isTextPresent Please enter Email ID assertT
  • Bootstrap 工具提示可以工作但由于 z 索引而隐藏?

    如果将鼠标悬停在第一支铅笔上 您可以看到工具提示出现 但它是隐藏的 我怎样才能让所有工具提示显示在其他所有内容之上 相关代码 nav text on click null function alert heyo nav text toolt
  • 从命令行(CLASSPATH)运行 Mahout

    在Windows下使用Maven成功编译了Mahout 我正在尝试从命令行运行示例之一 但我不明白我做错了什么 看起来像是 CLASSPATH 问题 假设我想运行 GroupLensRecommenderEvaluatorRunner 示例
  • 哪些数据会发送回 Paypal“返回”网址,以及如何将我自己的数据发送到此网址?

    实施标准 Paypal 立即购买 按钮 文档不清楚什么数据被传递到 返回 url 该文档也没有提及如何通过表单发送您自己的自定义数据 任何人都可以为此提供适当的文档吗 相关代码
  • C++ 中模板和 STL 的缺点 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用 STL 或模板有什么缺点吗 是否存在不适合的情况 首先 如果它们可以帮助您解决问题 您应该使用它们 模板是 C 非常重要的一部分 并且多年
  • 如何将 ISO7816 选择命令与 DESfire Ev1 卡一起使用?

    我有一张 DESfire Ev1 版本 1 3 卡 我正在尝试使用 ISO7816 apdu 样式选择一个文件 我有一份文件 需要帮助A0 A1 A2我可以使用本机或包装模式选择它 Native gt 5A A0 A1 A2 lt 00 W
  • CakePHP 2.0 中的错误处理。转义 viewVars [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 Cake 2 中遇到了一个奇怪