2013-10-06 2 views
11

Есть функция Magento, чтобы получить значение «ID» из этого URL:Как получить параметр url в контроллере Magento?

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

Я знаю, что могу разделить URL на «/», чтобы получить значение, но я бы предпочел одиночная функция.

Это не работает:

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

Это работает только если я использую http://example.com/path/action?id=123

+1

$ id = $ this-> getRequest() -> getParam ('id'); это только работа в классе, которая распространяется на Mage_Adminhtml_Controller_Action (по администратора) или Mage_Core_Controller_Front_Action (по интерфейсу). если это не сработало, значит, ваш контроллер не вызван. –

ответ

36

алгоритм маршрутизации по умолчанию Magento использует три части URL-адреса.

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() 
+0

Я вижу. Однако я думаю, что проблема была также в том, что я не определил маршрутизатор. Я использовал рерайт: – jogi99

+0

<[CDATA [#^/?Аякса/продукт/пункт #]]> /MyMod/MyCon jogi99

6

Если URL является следующая структура: 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()); 

Если ваш URL выглядит так: http://magentoo.blogspot.com/magentooo/userId=21

затем использовать это, чтобы получить значение URL

echo $_GET['userId']; 

Если вы хотите получить больше информации об этом click here.

Смежные вопросы