$this->_helper->viewRenderer->setNoRender(); or (true)
いつも言っているように、ZF2でビューを無効にするのに苦労しています
PHP Fatal error: Call to a member function setNoRender() on a non-object in ../module/Location/src/Location/Controller/LocationController.php on line 190
$this->_helper->viewRenderer->setNoRender(); or (true)
いつも言っているように、ZF2でビューを無効にするのに苦労しています
PHP Fatal error: Call to a member function setNoRender() on a non-object in ../module/Location/src/Location/Controller/LocationController.php on line 190
ビューを完全に無効にするには、コントローラ アクション内から Response オブジェクトを返す必要があります。
<?php
namespace SomeModule\Controller;
use Zend\Mvc\Controller\ActionController,
Zend\View\Model\ViewModel;
class SomeController extends ActionController
{
public function someAction()
{
$response = $this->getResponse();
$response->setStatusCode(200);
$response->setContent("Hello World");
return $response;
}
}
レイアウトを無効にして、このアクションのビュー モデル テンプレートのみをレンダリングするには、次のようにします。
public function anotherAction()
{
$result = new ViewModel();
$result->setTerminal(true);
return $result;
}
ZF2 は大部分が開発中であり、現在の動作を保証することはできません。ZF2 が安定した状態になったときに動作するようになるでしょう。
ただし、最近、Zend\Mvc の新しいビュー レイヤーがマージされ、ビュー関連の情報を含むビュー モデルをレンダリング ビューに返すオプションが提供されました。ビューのレンダリングを無効にするには、応答を直接返すことでディスパッチをショートカットできるため、ビューはまったくレンダリングされません。
public function somethingAction ()
{
// Do some intelligent work
return $this->getResponse();
}
レイアウトのみを無効にしただけだと思います
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;
jsonをビューファイルにエコーします...
レイアウトを無効にする簡単な解決策を見つけました。私の中でajaxAction
public function ajaxAction()
{
if ( $this->getRequest()->isXmlHttpRequest() ) {
$this->layout( 'layout/ajax-layout' );
}
}
そして、\module\Application\view\layout\ajax-layout.phtml
<?php echo $this->content; ?>
public function testAction()
{
return false;
}
単純に false を返します。
メソッドで '' を返すだけで、View テンプレートが自動ロードされません
public function goAction()
{
return '';
}
$this->_helper
ZF2 では使用できませんが、ビューを無効にするには次のようにします。
$this->broker("ViewRenderer")->setNoRender();
また
$this->broker->load("ViewRenderer")->setNoRender();