0

この質問への回答はこちらで得ましたが、別の懸念\問題があります。

ヘルパーを介して部分ビューから作成されたモジュールにサブナビゲーション バーがあります。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',
                ),
        ),
),

対応するテンプレートをロードせずにアクションを呼び出す正しい方法はありますか?

4

2 に答える 2

5

代わりに応答オブジェクトを返すことができます:

public function logoutAction()
{
    // do stuff

    return $this->redirect()->toRoute('login');
}

その場合、テンプレートは必要ありません。

于 2014-04-10T18:19:02.457 に答える
3

zf2 で

public function Action(){
   $vm = new ViewModel();
   $vm->setTerminal(true);

   return $vm;
}

編集:::カスタム応答を返したい場合は、次のことができます。

public function Action(){
     return $this->getResponse()->setContent("Hello world!");
}
于 2014-04-10T17:43:53.260 に答える