[英]How to get odd numbers of parameters in Zend Framework?
大家問候
使用request
對象,我無法獲得此URI中的唯一值:
http://mydomain.com/controller/action/value1
使用$request->getParams()
不會返回value1
。
輸出:
array([controller] => 'controller', [action] => 'action')
鑰匙不見了。
問題本身很簡單,我可以自己解析URI,但實際上我希望ZF做到這一點(對嗎?)。 我找不到使用Google或SO的提示。
我如何才能獲得沒有價值的鑰匙?
默認情況下,Zend Framework希望URL中的參數采用/key/value
的形式。 嘗試這個:
http://mydomain.com/controller/action/key1/value1
print_r($request->getParams());
結果是:
Array
(
[controller] => controller
[action] => action
[key1] => value1
)
編輯:如其他人所述,如果您想堅持使用http://mydomain.com/controller/action/value1
,則應該看看Zend_Controller_Router
。
嘗試通過添加必填字段來修改路線。
那么它看起來像什么路線? 如果它是默認路由,則應該這樣,因為它依賴於解析規則key/value
。
如果它不遵循該簡單規則,那么您需要創建一個新路由來匹配該特定URI的規則。
通常,如果您認為自己的密鑰沒有值,則需要在路由中為此值提供默認值。
http://mydomain.com/controller/action/param/value1/
array([controller] => 'controller', [action] => 'action', [param] => 'value1');
如果您想像在您的示例中那樣,則必須自己制定路線。
默認情況下,將使用rails樣式的URL解析。 因此,出於您的目的,您需要:
http://mydomain.com/controller/action/key1/value1
不過,您可以配置路由器,這樣就不必使用key1部分。 參見文檔:
http://framework.zend.com/manual/en/zend.controller.router.html
如下所示在route.ini文件中定義您的路由(如果value1是十進制值,如果未更改正則表達式以滿足您的需要):
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)訪問操作中的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.