如何在Magento控制器中获取url参数?

时间:2013-10-06 17:21:31

标签: magento url controller

是否有Magento函数从此URL获取“id”的值:

http://example.com/path/action/id/123

我知道我可以在“/”上拆分网址来获取值,但我更喜欢单个函数。

这不起作用:

$id = $this->getRequest()->getParam('id');

只有在我使用http://example.com/path/action?id=123

时才有效

3 个答案:

答案 0 :(得分:40)

Magento的默认路由算法使用三部分网址。

http://example.com/front-name/controller-name/action-method

所以当你打电话

http://example.com/path/action/id/123

单词path是您的正式名称,action是您的控制器名称,id是您的操作方法。 这三种方法后,您可以使用getParam来获取键/值对

http://example.com/path/action/id/foo/123

//in a controller
var_dump($this->getRequest()->getParam('foo'));

您也可以使用getParams方法获取参数数组

$this->getRequest()->getParams()

答案 1 :(得分:7)

如果您的网址是以下结构:http://yoursiteurl.com/index.php/admin/sales_order_invoice/save/order_id/1795/key/b62f67bcaa908cdf54f0d4260d4fa847/

然后使用:

echo $this->getRequest()->getParam('order_id'); // output is 1795

如果您想获取所有网址值或参数值,请使用以下代码。

var_dump($this->getRequest()->getParams());

如果您的网址如下:http://magentoo.blogspot.com/magentooo/userId=21

然后使用它来获取url的值

echo $_GET['userId'];

如果您想了解有关此click here的更多信息。

答案 2 :(得分:0)

如果它是Magento模块,您可以使用Varien Object getter。如果它适用于您自己的模块控制器,您可能需要使用寄存器方法。

来源:http://www.vjtemplates.com/blog/magento/register-and-registry