сделать пустой вид в CakePHP - PullRequest
9 голосов
/ 02 января 2012

Мне нужно, чтобы представление не отображалось в указанном случае, но я не могу понять, как предотвратить его отображение.

Я пытался

$this->autoRender=false

, но ничего не произошло, вероятно, потому что я использую API-движок, который управляет рендерингом по-другому, чем обычные контроллеры.Кто-нибудь знает какой-нибудь трюк, чтобы сделать это?

Ответы [ 8 ]

12 голосов
/ 08 мая 2014

Использование $this->layout = 'ajax' кажется недостаточным.

Но использование этих двух строк работает:

$this->layout = 'ajax'; 
$this->render(false);
6 голосов
/ 18 февраля 2014

При поиске решения я нашел этот ответ. Теперь при использовании CakePHP 2.4.x вы можете использовать следующий код в вашем контроллере:

$this->layout = false;

Это приведет к отображению только вида без макета.

4 голосов
/ 03 января 2012

Попробуйте использовать макет ajax $this->layout = 'ajax' это пустой макет по умолчанию, который используется для методов ajax.

3 голосов
/ 25 марта 2017
public function function_without_layout(){ 
    $this->viewBuilder()->autoLayout(false);
    echo "hello Brij";
    exit;
}

$this->layout = false; устарела в CakePHP версии 3.
Использовать $this->viewBuilder()->autoLayout(false); для CakePHP версии 3.

3 голосов
/ 29 октября 2016

Это старый вопрос.Текущая версия тортов - 3.x, и есть простой способ использовать пустой макет.

Только добавить в контроллер:

$this->viewBuilder()->autoLayout(false);
2 голосов
/ 09 июня 2017

Добавьте это в свой контроллер:

$this->autoRender = false;  

Это работает в моем проекте.

0 голосов
/ 24 декабря 2016

В методе CakePHP 3 autoLayout(false) из другого ответа система все равно попытается найти соответствующий файл представления / шаблона для вызываемого действия.Так как я не нуждался в выводе вообще, это не сработало для меня, поэтому мне нужно было также визуализировать пустой шаблон.

Создание пустого .ctp файла для каждого пустого действия, которое вам может понадобиться, на самом деле не вариант, потому что вы обычно хотите иметь его и использовать повторно.CakePHP 2 имеет свойство $this->viewPath, которое позволяет настроить контроллер для просмотра папки app/View, но альтернатива CakePHP 3 по-прежнему просматривает соответствующие папки контроллера и префикса.Существует неочевидный способ заставить CakePHP3 искать шаблон в корневом пути просмотра.

  1. Создать src/Template/my_blank_view.ctp
  2. Добавьте следующее к вашемудействие контроллера:

    $this->viewBuilder()->layout(false);
    $this->viewBuilder()->templatePath('.'); // this
    $this->viewBuilder()->template('my_blank_view');
    

Кроме того, я использую $this->viewBuilder()->layout(false) вместо autoLayout(false), поскольку последний тип подразумевает, что позже может быть установлен другой макет, где layout(false) просто явно указывает, что макет не нужен.

0 голосов
/ 02 января 2012

, не зная ничего о используемом вами API-движке, возможно, попробуйте создать пустой макет с пустым содержимым и вызвать его в контроллере как $this->layout = 'empty_layout'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...