2012-02-08 45 views
2

我想知道有没有什么办法可以像codeigniter提供的uri段.. 在codeigniter中我们可以做到;在zend框架中访问网址段

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

得到URL的第3段.. 让说,我有一个像网址;

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

我怎样才能得到参数?

在默认路由设置在Zend框架的应用程序

回答

0

我想出了一个像zend路由器正则表达式设置的解决方案;

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

    $router->addRoute('module', $route); 

in module index controller's index action;

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

似乎一路走来简单的操作。 ZF中的网址始终(除非您更改)键值对。所以如果你知道这个url,你就知道参数。 www.example.com/key/value/key/value – RockyFord 2012-02-09 10:55:08

1

那么你将有: modulee:/控制器:/动作/参数:/值:/参数2:/参数2

所以对:

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


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

很肯定:

echo $_GET['id']; 

应太。

希望这会有所帮助!

+0

但如果我没有像id这样的密钥,它只是一个params值? – 2012-02-08 15:26:06

+0

@tylerdurden我必须检查tocumentation,但是如果你设置了一个路由以便第一个参数是id,那么无论你在页面中看到单词ID,你都应该能够通过$ _GET ['id']得到它。参数。我想,你也可以将网址分解到参数。 – Iznogood 2012-02-08 15:41:26

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

这些是与所述请求对象工作常见的方式,它们不是

这是从$this->getRequest()->getParams();
通知什么期望该URL参数模块,控制器,动作站= 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中被认为是非常糟糕的做法。

+0

它不工作,因为在控制器第一个参数后,预计是一个视图的行动..但目前这是一个只是动态的值没有意见和absoulutely它不是行动,所以我得到一个“页面找不到”的错误。 – 2012-02-09 09:21:34