2

私のプロジェクトでは、ViewHelper を作成して、すべてのページにフォームを表示しました。ユーザーがフォームを送信すると、投稿情報は常に同じコントローラーに投稿されます。コントローラーが投稿を処理した後、ユーザーはフォームを送信したページにリダイレクトされる必要があります。

動的にリダイレクトするには、非表示の要素を介してコントローラーとアクションを送信します。しかし、ViewHelper でそれらを設定する方法がわかりません。で試してみましたInjectApplicationEventInterfaceが、メンバー変数が空だったので、ヘルパーではなくコントローラーでのみ機能すると思います。

では、RouteMatch オブジェクトにアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

2

Zend\View\HelperPluginManagerビューヘルパーを保持するサービスロケーターであり、アプリケーションイベント初期化子のインスタンスは含まれていませんが、プラグインマネージャーであるため、メインのサービスロケーターへの参照があります。ヘルパーに以下を実装することを検討してください。

public function __construct(\Zend\Mvc\MvcEvent $mvcEvent)
{
    // injecting the mvc event, since $mvcEvent->getRouteMatch() may be null
    $this->mvcEvent = $mvcEvent;
}

次に、モジュールgetViewHelperConfig(の実装ViewHelperProviderInterface)で次のように定義します。

public function getViewHelperConfig()
{
    return array(
        'factories' => array(
            'myHelper' => function (\Zend\ServiceManager\AbstractPluginManager $pm) {
                 $application = $pm->getServiceLocator()->get('Application');

                 return new MyViewHelper($application->getMvcEvent());
            },
        ),
    );
}
于 2013-02-11T12:50:53.653 に答える