访问zend框架中的url段

时间:2012-02-08 13:51:59

标签: php zend-framework

我想知道是否有任何方法可以获得像codeigniter提供的uri段... 在codeigniter我们可以做;

$this->uri->segment(3);

获取第3段网址.. 假设我有一个网址;

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

我如何获得参数?

3 个答案:

答案 0 :(得分:1)

在zend框架应用程序中的默认路由设置中,您将拥有: modulee:/控制器:/动作/ PARAM:/值:/参数2:/ param2的

所以:

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


echo $this->getParam('id'); // prints 12
echo $this->getParam('name'); // prints newstest

非常确定:

echo $_GET['id'];

也应该有用。

希望这有帮助!

答案 1 :(得分:0)

$this->getRequest()->getParams(); //Retrieves all parameters sent
$this->getRequest()->getPost(); //Retrieves the post array
$form->getValues(); //retrieves form values

这些是处理请求对象的常用方法,它们不是

这是$this->getRequest()->getParams();的期望 请注意,网址参数为模块,控制器,操作,工作站= 1,提交=提交

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();

的相同请求
Post array(2) {
  ["station"] => string(1) "1"
  ["submit"] => string(6) "Submit"
}

自己使用Zend_Debug :: dump($ var,'label'); 使用Zend Framework创建。

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

答案 2 :(得分:0)

我提出了像zend router regex setting这样的解决方案;

    $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));