0

フォームを処理するコントローラーがあります。投稿されたデータに特定の値がある場合は、別のモジュールにあるコントローラーにユーザーを転送する必要があります。私はこれを試しました:

$post = $this->params()->fromPost();
if (!isset($post['terms'])) {
    $this->forward()->dispatch('Job\Controller\IndexController', 
        array('action' => 'index')); 
}

しかし、上記のコードは機能しません。ドキュメントには、コントローラーは 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

0

コントローラーで ServiceLocator Aware Interface を使用します。

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 に答える