How to get a url parameter in Magento controller?

2019-02-06 04:26发布

问题:

Is there a Magento function to get the value of "id" from this url:

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

I know I can split the url on "/" to get the value, but I'd prefer a single function.

This doesn't work:

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

It only works if I use http://example.com/path/action?id=123

回答1:

Magento's default routing algorithm uses three part URLs.

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

So when you call

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

The word path is your front name, action is your controller name, and id is your action method. After these three methods, you can use getParam to grab a key/value pair

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

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

You may also use the getParams method to grab an array of parameters

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


回答2:

If your url is the following structure: http://yoursiteurl.com/index.php/admin/sales_order_invoice/save/order_id/1795/key/b62f67bcaa908cdf54f0d4260d4fa847/

then use:

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

If you want to get All Url Value or Parameter value than use below code.

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

If your url is like this: http://magentoo.blogspot.com/magentooo/userId=21

then use this to get the value of url

echo $_GET['userId'];

If you want more info about this click here.



回答3:

If it's a Magento module, you can use the Varien Object getter. If it's for your own module controller, you may want to use the register method.

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