2014-01-16 62 views
2

無限PARAMS我有這樣的路線:ZF2控制檯路線

'cronExec' => array(
    'options' => array(
     'route' => 'exec [<commands>]', 
     'defaults' => array(
      'controller' => 'Cron\Controller\Commands', 
      'action' => 'exec' 
     ) 
    ) 
), 

這將趕上:

  • execCmd
  • execCmd commandNameHere

,但我也想趕上第二個與無限像參數的數量:

  • execCmd commandNameHere --x = Y --a = B --c = 1
  • execCmd commandNameHere --param1 = 1 --param2 = 0

或以任何其他方式讓我送無限的,未知的命名PARAMS到指定的命令,但onlywhen execCmd設置前

回答

2
'cronExec' => array(
    'type' => 'Catchall', 
    'options' => array(
     'route' => 'exec', 
     'defaults' => array(
      'controller' => 'Cron\Controller\Commands', 
      'action' => 'exec' 
     ) 
    ) 
), 

UPDATE1

或者您可以傳遞單參數內的任何參數。

'cronExec' => array(
    'options' => array(
     'route' => 'exec [--params=]', 
     'defaults' => array(
      'controller' => 'Cron\Controller\Commands', 
      'action' => 'exec' 
     ) 
    ) 
), 

這樣稱呼它

php public/index.php exec --params="--any --other --params" 

,並在控制器解析$this->params('params')getopt或什麼的。

+0

這不起作用。 Catchall似乎忽略了路線。這意味着即使你沒有設置'exec',它也會捕獲你輸入控制檯請求的任何東西。兩者都會被你的路由所捕獲:'exec commandName param1 = a'和'commandName param1 = a'。我只需要第一個選項。 – imclickingmaniac

+1

確保你首先在'['console'] ['router'] ['routes']'數組中放置這條規則。這種方式只有在其他方面沒有的情況下才會匹配。 – akond

+0

但是,如果我輸入了錯誤的/不存在的命令,我想離開默認的zend操作。我可以這樣做,但如果我會犯一個錯誤或想看到可用命令列表(對我來說它包括教義),它會跳到我的'exec'控制器中,它不打算對這些事情做出反應。 – imclickingmaniac