覆盖CakePHP中RequestHandler中的JSON视图



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

  • JsonView.php文件导入project_root/app/View/CustomJsonView.php中的另一个文件中。(我想我可以用App:import,对吗?)
  • 选择此文件作为requestHandler中的自定义文件,如下所示:

public $components = array('RequestHandler' => array( 'viewClassMap' => array('json' => '/right/way/to/this/file/CustomJsonView', )));

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

您不应该传递完整路径,而应该传递"短类名",就像链接示例中所示,其中ApiKit.MyJson指的是ApiKit插件中的MyJsonView视图类,该视图类可能位于app/Plugin/ApiKit/View/MyJsonView.php中。

如果按照惯例将CustomJsonView类放置在app/View/CustomJsonView.php中,如文档中所示,则只需将CustomJson作为请求处理程序viewClassMap选项中的短类名传递即可。

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

另请参见

  • Cookbook>视图>创建自己的视图类
  • 食谱>核心库>通用>应用程序类>加载供应商文件

相关内容

  • 没有找到相关文章

最新更新