В методе CakePHP 3 autoLayout(false)
из другого ответа система все равно попытается найти соответствующий файл представления / шаблона для вызываемого действия.Так как я не нуждался в выводе вообще, это не сработало для меня, поэтому мне нужно было также визуализировать пустой шаблон.
Создание пустого .ctp
файла для каждого пустого действия, которое вам может понадобиться, на самом деле не вариант, потому что вы обычно хотите иметь его и использовать повторно.CakePHP 2 имеет свойство $this->viewPath
, которое позволяет настроить контроллер для просмотра папки app/View
, но альтернатива CakePHP 3 по-прежнему просматривает соответствующие папки контроллера и префикса.Существует неочевидный способ заставить CakePHP3 искать шаблон в корневом пути просмотра.
- Создать
src/Template/my_blank_view.ctp
Добавьте следующее к вашемудействие контроллера:
$this->viewBuilder()->layout(false);
$this->viewBuilder()->templatePath('.'); // this
$this->viewBuilder()->template('my_blank_view');
Кроме того, я использую $this->viewBuilder()->layout(false)
вместо autoLayout(false)
, поскольку последний тип подразумевает, что позже может быть установлен другой макет, где layout(false)
просто явно указывает, что макет не нужен.