2015-09-29 4 views
0

По умолчанию SocialENgine автоматически отображает представление в конце каждого действия контроллера. Если вы используете макет, он также отображает это. Это нормально для обычных веб-страниц, но когда вы отправляете ответ AJAX, вы не хотите этого. Как вы предотвращаете SocialEngine от автоматического рендеринга по принципу действия? С ZendFramework, вы можете сделать это:Предотвращение создания социальных сетей (для AJAX)

$this->_helper->layout->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(TRUE); 

И у вас есть доступ к некоторым хорошим помощникам, как:

$this->_helper->json($data); 

... который будет json_encode ваших $ данных, вывод его с заголовками JSON и умереть последний, поэтому получение чистого JSON возвращается из действия без рендеринга представления, что в значительной степени является именно тем, что я хочу.

Однако ни одно из этих решений не работает в SocialEngine - $ this -> _ helper всегда кажется пустым массивом, как и $ this-> view -> _ helper. И вернуть $ this-> setNoRender() только предотвращает рендеринг текущего элемента, а не всю страницу.

ответ

1

в какой-то по умолчанию виджет Я нашел этот вызов функции, которая подавляет отрисовку виджета полностью:

return $this->setNoRender(); 

Он реализован в Engine_Content_Widget_Abstract в случае, если вы заинтересованы.

Best, Benni.

Смежные вопросы