如何将URL参数放入"params"ZF2控制器插件


How to put URL parameters into "params" controller plugin of ZF2 Controller?

我正在使用ZF2模块,但我没有使用完整的ZF2框架堆栈。

我需要能够从URL字符串拉GET参数到我的控制器。

我创建了一个扩展ZF2的AbstractActionControllerController。阅读ZF2:在控制器中获取url参数后,我使用print $this->params('line');尝试打印$_GET['line']值,但没有显示任何内容。

简而言之,这应该是工作的,但没有:

//ZF2 equivalents of print $_GET['line'] (either one should work)
print $this->params('line'); 
print $this->getEvent()->getRouteMatch()->getParam('line');

我想这是由于缺乏从$_GET填充params的机制。我怎么能得到ZF2机制的一部分到我的代码?

值得这么麻烦吗?例如,如果我需要引入路由,事件,并将整个ZF2框架带入我的代码中,并显著地重新连接我的应用程序以使其工作,我可能只想坚持使用$_GET方法,至少现在是这样。

我不确定这是不是一个很好的答案,但它至少可能有所帮助。所以,免责声明:我没有尝试过。

所以你扩展了AbstractActionController,这很好,因为它有很多功能。AbstractActionController实现了一个完整的接口列表,使控制器监听MvcEvents,使用服务定位器等。如果不向控制器提供ServiceLocator等,那么扩展AbstractActionController就没有意义了。使用DispatchableInterface代替!另外,请阅读:http://framework.zend.com/manual/current/en/modules/zend.mvc.controllers.html

现在,如果您确实想使用AbstractActionController的功能,您将需要'Zend'Mvc包。哪一种会带来所有的特性或开销——具体是哪一种取决于您的应用程序。请注意,Zend MVC应用程序实际上是非常高性能的,但是如果您不打算重用这些组件,那么实际上没有它们可能会更好。手册实际上指出了如何引导Zend MVC: http://framework.zend.com/manual/current/en/modules/zend.mvc.intro.html#bootstrapping-an-application。如果你成功地引导了,你应该很好,并且能够使用你的控制器。

你可以试试

print $this->params()->fromQuery('line');

根据这个http://zf2cheatsheet.com/