2

我想在 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 。

4

1 回答 1

1

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

如果您遵循约定并按照文档中所示CustomJsonView放置您的类,那么您只需在请求处理程序选项中作为短类名传递。app/View/CustomJsonView.php CustomJsonviewClassMap

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

也可以看看

于 2017-02-15T15:03:36.387 回答