0

我有一个处理表单的控制器。如果发布的数据具有一定的价值,我需要将用户转发到位于不同模块中的控制器。我试过这个:

$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

堆栈跟踪:

4

3 回答 3

1

你有一个错误,因为在ServiceLocator你的控制器别名是

'Job\Controller\Index'

所以你应该使用这个控制器路径而不是 'Job\Controller\IndexController'

于 2014-02-25T10:18:51.013 回答
0

在控制器中使用 ServiceLocator 感知接口:

use Zend\ServiceManager\ServiceLocatorAwareInterface;
于 2013-08-02T20:15:40.067 回答
0

尝试使用标头重定向。

// $url is new target
header('Location:'.$url,1);
exit(0);

这是我的重定向方法,你可以使用它:

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);
}
于 2013-08-02T06:30:46.887 回答