Ajaxを使用したいのですが、Zend Framework 2でsetNoRender()と同じように関数を使用してレンダービューを無効にする方法がわかりません。
Zend Framework 2でレンダリングビューを無効にする方法は?
JSONを使用している場合は、ビューのJsonStrategy
を確認し、コントローラーからJsonModel
を返します。これを見てください 記事 。
または、コントローラーからResponse
を返すと、ビューレイヤー全体がスキップされます。
public function testAction()
{
$response = $this->getResponse();
$response->setStatusCode(200);
$response->setContent('foo');
return $response;
}
適切なそしてこれを行う簡単な解決策
public function testAction()
{
$data = array(
'result' => true,
'data' => array()
);
return $this->getResponse()->setContent(Json::encode($data));
}
詳細: http://cmyker.blogspot.com/2012/11/zend-framework-2-ajax-return-json.html
私はいくつかの答えを見つけました。
$this->layout()->getLayout()
は、新しく選択されたレイアウトの名前/パスを返しますが...次のコマンドのいずれでもレイアウトは変更されません...
コントローラ内
$this->getLocator()->get('view')->layout()->setLayout('layouts/ajax.phtml');
$this->getLocator()->get('view')->layout()->setLayout('ajax');
$this->getLocator()->get('view')->layout()->disableLayout();
ビューPHTMLファイル内
$this->layout()->setLayout('layouts/ajax.phtml');
$this->layout()->setLayout('ajax');
$this->layout()->disableLayout();
...
use Zend\View\Model\JsonModel;
public function myAction() {
...
$view = new JsonModel($myArray);
$view->setTerminal(true);
return $view;
}
$ view = new ViewModel(); $ view-> setTerminate(true);