在Kohana/CodeIgniter中,我可以使用以下格式的URL:
http://www.name.tld/controller_name/method_name/parameter_1/parameter_2/parameter_3 ...
然后按如下方式读取控制器中的参数:
class MyController { public function method_name($param_A, $param_B, $param_C ...) { // ... code } }
你如何在Zend框架中实现这一目标?
看一下Zend_Controller_Router类:
http://framework.zend.com/manual/en/zend.controller.router.html
这些将允许您定义Zend_Controller_Router_Route,它以您需要的方式映射到您的URL.
为Index控制器的Index操作设置4个静态参数的示例是:
$router = new Zend_Controller_Router_Rewrite(); $router->addRoute( 'index', new Zend_Controller_Router_Route('index/index/:param1/:param2/:param3/:param4', array('controller' => 'index', 'action' => 'index')) ); $frontController->setRouter($router);
在定义前端控制器后,会将其添加到引导程序中.
一旦进入您的行动,您就可以使用:
$this->_request->getParam('param1');
在您的操作方法中访问值.
安德鲁
更新(2016年4月13日): 我的答案中的链接已移动并已修复.但是,如果它再次消失 - 这里有一些替代方案,提供有关此技术的一些深入信息,以及使用原始文章作为参考材料:
带有函数参数的Zend Framework Controller操作
Zend_Controller接受参数的动作?
@ Andrew Taylor的回应是正确的Zend Framework处理URL参数的方式.但是,如果您想在控制器的操作中使用URL参数(如您的示例所示) - 请查看Zend DevZone上的本教程.