2013-10-06 16 views
11

Czy istnieje funkcja Magento, aby uzyskać wartość „id” z adresem URL:Jak uzyskać parametr adresu URL w sterowniku Magento?

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

wiem, że mogę podzielić URL na „/”, aby uzyskać wartość, ale ja preferuję pojedyncza funkcja.

To nie działa:

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

To działa tylko wtedy, gdy używam http://example.com/path/action?id=123

+1

$ id = $ this-> getRequest() -> getParam ('id'); to jest tylko praca w klasie, która rozciąga się na Mage_Adminhtml_Controller_Action (na admin) lub Mage_Core_Controller_Front_Action (na frontend). jeśli to nie zadziałało, oznacza to, że twój kontroler nie został wywołany. –

Odpowiedz

36

domyślny algorytm routingu Magento używa trzyczęściowa URL.

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

Więc kiedy zadzwonisz

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

słowo path to nazwa przodu, action to nazwa kontrolera i id jest metoda działania. Po te trzy metody można użyć getParam złapać parę klucz/wartość

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

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

Można również użyć metody getParams chwycić tablicę parametrów

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

Rozumiem. Jednak myślę, że problem tkwił także w tym, że nie zdefiniowałem routera. I był przy użyciu przepisać! – jogi99

+0

/MyMod/mycon jogi99

6

Jeśli adres URL jest następującą strukturę: http://yoursiteurl.com/index.php/admin/sales_order_invoice/save/order_id/1795/key/b62f67bcaa908cdf54f0d4260d4fa847/

wtedy użyć:

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

Jeśli chcesz uzyskać wartość Wszystkie url lub Parametry, użyj poniższego kodu.

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

Jeśli url jest tak: http://magentoo.blogspot.com/magentooo/userId=21

następnie użyć tego, aby uzyskać wartość url

echo $_GET['userId']; 

Jeśli chcesz uzyskać więcej informacji o powyższym click here.