从Zend中的URL获取所有参数

时间:2011-08-24 06:19:16

标签: php zend-framework

在Zend应用程序中有一个像这样的url示例:

http://example.com/Controller/action/42

有没有方便的方法来检索最后一个参数? (“42”)

$this->_request->getParams();

不起作用,因为它只会检索名称值对。

3 个答案:

答案 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');
    ...
}