web-dev-qa-db-ja.com

Zend Framework 2でレンダービューを無効にする方法

Ajaxを使用したいのですが、Zend Framework 2でsetNoRender()と同じように関数を使用してレンダービューを無効にする方法がわかりません。

Zend Framework 2でレンダリングビューを無効にする方法は?

16
Tai T

JSONを使用している場合は、ビューのJsonStrategyを確認し、コントローラーからJsonModelを返します。これを見てください 記事

または、コントローラーからResponseを返すと、ビューレイヤー全体がスキップされます。

public function testAction()
{
    $response = $this->getResponse();
    $response->setStatusCode(200);
    $response->setContent('foo');
    return $response;
}   
17
Rob Allen

適切なそしてこれを行う簡単な解決策

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

9
Cmyker

私はいくつかの答えを見つけました。

$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();
3
...
use Zend\View\Model\JsonModel;

public function myAction() {
    ...

    $view = new JsonModel($myArray);
    $view->setTerminal(true);
    return $view;
}
0
Killan

$ view = new ViewModel(); $ view-> setTerminate(true);

0
Kdecom