在Zend应用程序中有一个像这样的url示例:
http://example.com/Controller/action/42
有没有方便的方法来检索最后一个参数? (“42”)
$this->_request->getParams();
不起作用,因为它只会检索名称值对。
答案 0 :(得分:6)
看起来你正在寻找Zend_Controller_Router。
Zend_Controller_Router_Route是标准框架路由。它结合了易用性和灵活的路径定义。每个路由主要由URL映射(静态和动态部分(变量))组成,可以使用默认值和可变要求进行初始化。
$route = new Zend_Controller_Router_Route(
':controller/:action/:id',
array(
'controller' => 'index',
'action' => 'index',
'id' => 0
),
array('id' => '\d+') // Makes sure :id is an int
);
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute('myRouteName', $route);
答案 1 :(得分:2)
无效的zf网址
网址通常由
组成/控制器/动作/ ID /值/ ID2 / VALUE2 /....../ IDN /值N
然后可以一起阅读所有这些参数:
$这 - > _getAllParams()
$这 - > _request-> getParams()方法;
或使用您自己的ID
$这 - > _request-> getParam( “ID”);
$这 - > _getParam( “ID”)
答案 2 :(得分:0)
首先,作为@adlawson,声明你需要创建一个接受参数的路由。通过这样做,您还可以为此参数指定名称。 @adlawson提出的代码足够好了:
$route = new Zend_Controller_Router_Route(
':controller/:action/:id',
array(
'controller' => 'index',
'action' => 'index',
'id' => 0
),
array('id' => '\d+') // Makes sure :id is an int
);
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute('myRouteName', $route);
然后,在控制器中,从您的网址id
中检索http://example.com/Controller/action/42
的值的最简单方法如下:
public function indexAction () {
...
$id = $this->params()->fromRoute('id');
...
}