我正在努力禁用ZF2 $this->_helper->viewRenderer->setNoRender(); or (true)
中的视图而没有运气,因为它总是说那里
PHP Fatal error: Call to a member function setNoRender() on a non-object in ../module/Location/src/Location/Controller/LocationController.php on line 190
答案 0 :(得分:61)
要完全禁用视图,请在控制器操作中返回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;
}
答案 1 :(得分:4)
ZF2正在大力开发中,不能保证现在的工作方式,ZF2达到稳定状态时的工作方式。
但是,最近合并了Zend \ Mvc中的新视图层,它提供了返回视图模型以及视图相关信息以呈现视图的选项。要禁用视图渲染,可以通过直接返回响应来快速调度,因此视图根本不会呈现。
public function somethingAction ()
{
// Do some intelligent work
return $this->getResponse();
}
答案 2 :(得分:3)
我找到了一个禁用布局的简单解决方案。在我的ajaxAction
public function ajaxAction()
{
if ( $this->getRequest()->isXmlHttpRequest() ) {
$this->layout( 'layout/ajax-layout' );
}
}
并在\module\Application\view\layout\ajax-layout.phtml
<?php echo $this->content; ?>
答案 3 :(得分:3)
我会说只是禁用了布局
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;
并将您的json回显到您的视图文件中......
答案 4 :(得分:0)
只需在方法中返回'',它就不会自动加载视图模板
public function goAction()
{
return '';
}
答案 5 :(得分:0)
public function indexAction(){
$news = $this->em->getRepository('Admin\Model\News'); foreach ($news->findAll() as $new) { $res = $this->getResponse()->setContent($new->toXml()); } return $res; }
答案 6 :(得分:0)
public function testAction()
{
return false;
}
简单地返回false。
答案 7 :(得分:0)
您可以使用控制台模型执行此操作,也可以任意终止执行。
<?php
namespace SomeModule\Controller;
use Zend\Mvc\Controller\ActionController;
use Zend\View\Model\ConsoleModel; // if use ConsoleMode
use Zend\View\Model\JsonModel; // if use JSON
class SomeController extends ActionController
{
public function someAction() {
return new ConsoleModel(array(
'message' => 'Hello World',
));
}
// Json Method
public function jsonAction() {
return new JsonModel(array(
'message' => 'Hello World',
));
}
// This is really exaggerated, but it is quite effective.
public function killAction() {
echo 'Hello World';
exit;
}
}
在视图中使用: 的 some.phtml 强>
<?php
echo $message;
<强> json.phtml 强>
<?php
echo $message;
答案 8 :(得分:-1)
$this->_helper
在ZF2中不可用,但要禁用您可以执行的视图:
$this->broker("ViewRenderer")->setNoRender();
或
$this->broker->load("ViewRenderer")->setNoRender();