我想在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>视图>创建自己的视图类
- 食谱>核心库>通用>应用程序类>加载供应商文件