覆盖CakePHP中RequestHandler中的JSON视图

时间:2017-02-15 14:00:25

标签: php json cakephp requesthandler

我想在RequestHandler中重写JSON View。所以有一个文件project_root/lib/JsonView.php。我想做的是

  • JsonView.php文件导入project_root/app/View/CustomJsonView.php中的其他文件。 (我想我可以使用App:import,它会是正确的吗?)
  • 在requestHandler中选择此文件作为自定义,如下所示:

    public $ components = array(         ' RequestHandler' =>阵列(             ' viewClassMap' =>阵列(                 ' JSON' => ' /右/方法/到/该/文件/ CustomJsonView&#39 ;,             )     ));

但是我如何为这个文件写出正确的方法呢? 我也看到了这一个https://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html#RequestHandlerComponent::viewClassMap 但是没有关于文件正确路径的解释。我的CakePHP版本是2.4.4。

1 个答案:

答案 0 :(得分:1)

您不应该传递完整路径,而应该传递“短类名”,就像链接示例中所示,ApiKit.MyJson引用MyJsonView插件中的ApiKit视图类,可以位于app/Plugin/ApiKit/View/MyJsonView.php

如果您遵循惯例并将CustomJsonView课程放在app/View/CustomJsonView.php as shown in the docs中,那么您只需将CustomJson作为短名称传递给请求处理程序{{1}选项。

无论您使用viewClassMap还是只使用App::import()来包含require文件,都取决于您,两者都有效。无论如何,你必须确保你导入的任何内容都不会与现有的类名冲突(/lib/JsonView.php是一个保留名称,因为它已存在于核心中),并且它要么遵循CakePHP视图类命名约定,或者必须扩展它。

另见