在CakePHP中重写RequestHandler中的JSON视图
我想在RequestHandler中重写JSON视图。因此有一个文件在CakePHP中重写RequestHandler中的JSON视图,php,json,cakephp,requesthandler,Php,Json,Cakephp,Requesthandler,我想在RequestHandler中重写JSON视图。因此有一个文件project\u root/lib/JsonView.php。我想做的是 在project\u root/app/View/CustomJsonView.php中的另一个文件中导入JsonView.php文件。(我想我可以使用App:import,对吗?) 选择此文件作为requestHandler中的自定义文件,如下所示: public$components=array('RequestHandler'=>array('
project\u root/lib/JsonView.php
。我想做的是
- 在
中的另一个文件中导入project\u root/app/View/CustomJsonView.php
文件。(我想我可以使用JsonView.php
,对吗?)App:import
- 选择此文件作为requestHandler中的自定义文件,如下所示:
public$components=array('RequestHandler'=>array('viewClassMap'=>array('json'=>'/right/way/to/this/file/CustomJsonView')代码>
但是我如何为这个文件编写正确的方法呢?
我也看到了这个
但是没有解释文件的正确路径。我的CakePHP版本是2.4.4。您不应该传递完整路径,而应该传递“短类名”,就像链接的示例中所示,ApiKit.MyJson
指的是ApiKit
插件中的MyJsonView
视图类,它可以位于app/plugin/ApiKit/view/MyJsonView.php
中
如果按照惯例将CustomJsonView
类放在app/View/CustomJsonView.php
中,则只需在请求处理程序viewClassMap
选项中将CustomJson
作为短类名传递
您是使用App::import()
还是只使用require
来包含/lib/JsonView.php
文件,这取决于您自己,两者都有效。无论如何,您必须确保导入的内容不会与现有类名冲突(JsonView
是一种保留名称,因为它已经存在于核心中),并且它要么遵循CakePHP视图类命名约定,要么必须对其进行扩展
另见
谢谢,这很有帮助。我只是以这种方式包含了文件App::uses('JsonView','View')代码>然后扩展它。在RequestHandler中,我可以通过名称来调用它,自定义文件位于app/View/
文件夹中。