Php 在zend框架中访问url段

Php 在zend框架中访问url段,php,zend-framework,Php,Zend Framework,我想知道有没有办法像codeigniter那样获得uri段。。 在codeigniter中,我们可以做到 $this->uri->segment(3); 要获取url的第三段。。 比如说我有一个类似的url www.example.com/param1/param2/param3/param4 如何获取参数?在zend framework应用程序的默认路由设置中,您可以: 模块对象:/controller:/action/param:/value:/param2:/param2

我想知道有没有办法像codeigniter那样获得uri段。。 在codeigniter中,我们可以做到

$this->uri->segment(3);
要获取url的第三段。。 比如说我有一个类似的url

www.example.com/param1/param2/param3/param4

如何获取参数?

在zend framework应用程序的默认路由设置中,您可以: 模块对象:/controller:/action/param:/value:/param2:/param2

因此:

/admin/news/edit/id/12/name/newstest


echo $this->getParam('id'); // prints 12
echo $this->getParam('name'); // prints newstest
非常肯定:

echo $_GET['id'];
应该也行

希望这有帮助

$this->getRequest()->getParams(); //Retrieves all parameters sent
$this->getRequest()->getPost(); //Retrieves the post array
$form->getValues(); //retrieves form values
这些是处理请求对象的常用方法,但它们不是

这是从
$this->getRequest()->getParams()中可以得到的结果
请注意,url参数是模块、控制器、操作、站点=1、提交=submit

Params array(5) {
  ["module"] => string(5) "admin"
  ["controller"] => string(5) "index"
  ["action"] => string(5) "index"
  ["station"] => string(1) "1"
  ["submit"] => string(6) "Submit"
}
这是使用
$This->getRequest()->getPost()的相同请求

要自己获取这些值,请使用Zend_Debug::dump($var,'label'); 使用Zend框架创建


echo$_GET['id']
在ZF中被认为是非常糟糕的做法。

我提出了一个类似zend router regex设置的解决方案

    $route = new Zend_Controller_Router_Route_Regex(
                'module/(.*)',
                 array(
                        'module' => 'module',
                        'controller' => 'index',
                        'action'     => 'index'));

    $router->addRoute('module', $route);
模块内索引控制器的索引动作

    $paramArr = explode("/",$this->_request->getParam(1));

但是,如果我没有像id这样的键,它只是params的一个值呢?@tylerdurden我必须检查计算,但是如果你设置了一个路由,使第一个参数是id,那么不管你在参数中是否看到id这个词,你都应该能够通过$\u get['id']到达它。我猜,你也可以分解url以获取参数。它不起作用,因为在控制器之后,第一个参数应该是一个带有视图的操作。。但目前它只是一个没有视图的动态值,绝对不是操作,所以我得到了一个“页面未找到”错误。似乎一直以来都在进行简单的操作。ZF中的URL总是(除非您更改)键值对。因此,如果你知道url,你就知道参数。www.example.com/key/value/key/value
    $paramArr = explode("/",$this->_request->getParam(1));