我得到了这个问题here的答案,但现在我又有了一个问题。
我的模块中有一个subnav栏,通过帮助器从视图部分创建。 这是module.config.php中的配置:
'navigation' => array(
'default' => array(
array(
'label' => 'Search',
'route' => 'mymodule\search',
),
array(
'label' => 'Log Off',
'route' => 'logout',
),
),
),
我有一个带有2个动作的LoginController:登录和注销。登录后,我希望用户单击注销按钮,重定向到登录页面并清除其会话。
现在,如果我有登录和注销操作,我需要每个模板。注销操作似乎没有必要 - 我不希望为此操作加载另一个模板。
这是我的路由配置:
'login' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Application\Controller\Login',
'action' => 'login',
),
),
),
'logout' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Application\Controller\Login',
'action' => 'logout',
),
),
),
是否有正确的方法可以在不加载相应模板的情况下调用操作?
答案 0 :(得分:5)
您可以改为返回响应对象:
public function logoutAction()
{
// do stuff
return $this->redirect()->toRoute('login');
}
然后你不需要模板。
答案 1 :(得分:3)
在zf2上
public function Action(){
$vm = new ViewModel();
$vm->setTerminal(true);
return $vm;
}
EDIT ::: 如果您想要返回自定义响应,您可以执行以下操作:
public function Action(){
return $this->getResponse()->setContent("Hello world!");
}