2017-03-07 5 views
0

私はzf2でアプリケーションを書いていますが、実装方法はわかりません。ZF2 - パラメータの有無にかかわらず経路を管理するコントローラ

私はこのようなルータを持っている瞬間:

'routes' => [ 
     'stock' => [ 
      'type' => 'regex', 
      'options' => [ 
       'regex' => '/stock(?<sku>\/.*)', 
       'defaults' => [ 
        'controller' => MyController::class, 
        'action' => 'check', 
       ], 
       'spec' => '/path%path%' 
      ], 

だから私のURLはパラメータがcheckAction関数に渡さ../stock/13567/2312含まれている場合。

しかし、URLがパラメータとして送信されずに../stock/または../stockの場合、別のコンテンツを表示したいと思います。どうすればこれを達成できますか?

ありがとうございました。

答えて

1

だけthe docsのように、オプションとしてのparamをマークするために正規表現を強化:

'regex' => '/stock(?<sku>\/.*)?' 

...と明示的なデフォルト値を提供することを忘れないでください:

'defaults' => [ 
    'controller' => MyController::class, 
    'action' => 'check', 
    'sku' => '' // or else 
], 
2

あなたの場合skuパラメータが渡された場合、あなたのコントローラで次のことを行うことができます応じて、異なるコンテンツを表示したい:

public function indexAction() 
{ 
    // Return sku parameter if exists, false otherwise 
    $sku = $this->params('sku', false); 

    if ($sku) { 
     // For example get single item 
     ... 
     $view->setTemplate('template-a'); 
    } else { 
     // Get all items 
     ... 
     $view->setTemplate('template-b'); 
    } 

    return $view; 
} 
関連する問題