2010-02-05 41 views
1

問候大家如何在Zend Framework中獲取奇數個參數?

使用request對象,我不能得到一個唯一的值作爲這個URI:

http://mydomain.com/controller/action/value1 

使用$request->getParams()沒有返回的value1

輸出:

array([controller] => 'controller', [action] => 'action') 

密鑰丟失。

問題本身很簡單,我可以自己解析URI,但實際上我希望ZF能夠做到這一點(對吧?)。我找不到使用谷歌或SO的提示。

我怎樣才能得到一個沒有價值的鑰匙?

+0

所以路由是訣竅;)謝謝大家,我打勾了最易理解的答案。 – PvB 2010-02-05 15:18:03

回答

5

默認情況下,Zend Framework期望URL中的參數的格式爲/key/value。如果你想與http://mydomain.com/controller/action/value1堅持,你應該看一看Zend_Controller_Router如其他人所說,:試試這個:

http://mydomain.com/controller/action/key1/value1

print_r($request->getParams()); 

結果是:

Array 
(
    [controller] => controller 
    [action] => action 
    [key1] => value1 
) 

編輯。

0

嘗試通過添加所需字段來修改您的路線。

0

那麼它看起來像什麼樣的路線映射到?如果它是默認路由,那麼這應該是預料之中的,因爲它依賴於解析規則key/value

如果它不遵循這個簡單的規則,那麼你需要創建一個新的路由來匹配該特定URI的規則。

一般情況下,如果你認爲你有一個沒有值的密鑰,你需要在路由中爲該值提供默認值。

0

定義的路由路線。如下(如果值1是一個十進制值,如果不改變正則表達式,以滿足您的需求)ini文件:

routes.your_route.route = "controller/action/:value1" 
routes.your_route.defaults.controller = "controller" 
routes.your_route.defaults.action = "action" 
routes.your_route.reqs.value1 = "\d+" 

然後你就可以在你的動作使用getParam(S)訪問值。

相關問題