我有一个处理表单的控制器。如果发布的数据具有特定值,我需要将用户转发到驻留在不同模块中的控制器。我试过这个:
$post = $this->params()->fromPost();
if (!isset($post['terms'])) {
$this->forward()->dispatch('Job\Controller\IndexController',
array('action' => 'index'));
}
但上面的代码不起作用。文档说明控制器必须是ServiceLocatorAware,但我不知道如何制作控制器servicelocatoraware。知道我怎么能做到这一点吗?
以下是来自xdebug的错误消息。
/home/test/mydomain/vendor/ZF2/library/Zend/ServiceManager/ServiceManager.php:496
消息:
Zend\Mvc\Controller\ControllerManager::get was unable to fetch or create an instance for Job\Controller\IndexController
堆栈追踪:
答案 0 :(得分:1)
您遇到错误,因为 ServiceLocator 您的控制器别名是
'Job\Controller\Index'
所以你应该使用这个控制器路径而不是'Job \ Controller \ IndexController'
答案 1 :(得分:0)
尝试使用标头重定向。
// $url is new target
header('Location:'.$url,1);
exit(0);
这是我的重定向方法,myabe你可以使用它:
public function Redirect($url,$withCurrentQueryString=true){
if($withCurrentQueryString==true){
if(strpos($url,'?')>0){
$url=$url.'&'.$_SERVER['QUERY_STRING'];
}
else{
$url=$url.'?'.$_SERVER['QUERY_STRING'];
}
}
header('Location:'.$url,1);
exit(0);
}
答案 2 :(得分:0)
使用控制器中的ServiceLocator Aware Interface:
use Zend\ServiceManager\ServiceLocatorAwareInterface;