在Zend框架2中,控制器操作中获取GET参数的不同方式有什么区别?

4

我找到了几种在Zend Framework 2中在控制器>操作中获取GET参数的方法:

 $this->params()->fromRoute('id');

 $this->params('id');

 $this->getRequest()->getQuery()->get('id');

这些方式有什么区别吗?

我猜,params('id') 可能会从 GETPOST 中获取值。 fromRoutegetQuery 只会从 GET 中获取值,但是 fromRoute 可能会提供一些优势,比如清理或其他方面的处理。


1个回答

4
$this->params()->fromRoute('id');

这个使用了参数插件并返回单个命名路由参数。这用于段路由中的参数(例如,从/blog/:slug获取'slug'或从/archive/:year/:month/:day获取'year')。

$this->params('id');

这只是一个简写,代表的是$this->params()->fromRoute('id');

$this->getRequest()->getQuery()->get('id');

这将从查询字符串中获取一个值。


1
params-helper 提供更多信息 - danopz
感谢@Tim和@copynpaste。 这是否意味着,params()或params()->fromRoute('id')会给出相同的结果,并且可以在URL的两种格式delete/:id和delete?id=7中都提供值? - Kulin Choksi
抱歉,我的回答有点不准确 - 我已经进行了编辑。fromRoute()仅从路由中返回命名段,而不返回查询字符串参数。这与ZF1中等效函数的工作方式不同。 - Tim Fountain
@CoolZeroInfinity 我也这么认为,但似乎不是这样 - Github 代码 - danopz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接