2017-02-15 12 views
2

Я хочу переписать JSON View в RequestHandler. Итак, есть файл project_root/lib/JsonView.php. Что я хочу сделать, этоПереопределить вид JSON в RequestHandler в CakePHP

  • Импортировать файл JsonView.php в другой файл в project_root/app/View/CustomJsonView.php. (Я думаю, что я мог бы использовать App:import, будет ли это правильно?)
  • Выберите этот файл в качестве обычая в RequestHandler, как это:

    $ компоненты общественных = массив ( «RequestHandler» => массив ( «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.

ответ

1

Вы не должны пройти полный путь, но «короткие имена классов», так же как показан в связанном примере, где ApiKit.MyJson относится к классу MyJsonView вида в ApiKit плагине, который может быть расположен в app/Plugin/ApiKit/View/MyJsonView.php.

Если вы будете следовать конвенции и поместить CustomJsonView класс в app/View/CustomJsonView.phpas shown in the docs, то вы просто передать CustomJson как короткое имя класса в обработчиках запросов viewClassMap опций.

Используете ли вы App::import() или просто require, чтобы включить файл /lib/JsonView.php, зависит от вас, оба работают. В любом случае вы должны убедиться, что все, что вы импортируете там, не сталкивается с существующими именами классов (JsonView - это своеобразное зарезервированное имя, поскольку оно уже существует в ядре) и что оно либо выполняется в соответствии с соглашениями об именах классов вида CakePHP, или вы должны расширить его.

Смотрите также

+0

Спасибо, это помогло. Я просто включил файл таким образом: «App :: uses» («JsonView», «View»); », а затем просто расширил его. В RequestHandler я смог вызвать его только по имени, пользовательский файл находился в папке «app/View /». – Vladislav