我正在使用Apigility来构建我的Rest API。
我想构建能够接受多个参数。如
http://mydomain.com/users/1/activities/4
我现在可以从此页面访问:https://github.com/zfcampus/zf-apigility/issues/10
我已将模块路由编辑为:
'route' => '/users/:users_id/activities[/:activities_id]',
但是,我不知道如何从网址中检索users_id。
我尝试在我的资源php中抓取params
$evt = $this->getEvent();
$params = $evt->getParams();
die(var_dump($params));
但是,这只会返回
object(ArrayObject)#748 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["id"]=>
string(1) "4"
}
}
我有点困惑。请指教。
谢谢!
答案 0 :(得分:6)
在Zend Framework 2中,您可以使用RouteMatch来获取路由的参数。对于你的情况,你可以试试这个:
$e = $this->getEvent();
$route = $e->getRouteMatch();
$usr_id = $match->getParam('users_id');
user_id
现在位于$usr_id
变量中。
希望这会有所帮助!
答案 1 :(得分:1)
在我的控制器中,我得到了这样的参数。
$this->Params('users_id');
您可以通过相同的方式获取活动。或者
$this->getEvent()->getRouteMatch()->getParam('users_id');
如果你的网址是example.com/users?users_id=123&activites_id=123那么你可以通过调用
获得两者$this->params()->fromQuery()
,结果将是
Array (
[users_id] => 123
[activities_id] => 123
)
答案 2 :(得分:0)
最好的方法是这样的,你在一行代码中做了很多事情,就我而言,这是最好的做法:
$user_id = (int) $this->params()->fromRoute('users_id', 0);
$activities_id = (int) $this->params()->fromRoute('activities_id', 0);
如果users_id不是必需的,则会将其设置为0,然后您可以对...进行检查。
if (0 === $user_id) {
//Do some stuff
}
这就是我几乎所有路线的用途。