Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CakePHP中重写RequestHandler中的JSON视图_Php_Json_Cakephp_Requesthandler - Fatal编程技术网

在CakePHP中重写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('

我想在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('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/
文件夹中。