Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 基于参数url更改主题_Magento_Events_Observers - Fatal编程技术网

Magento 基于参数url更改主题

Magento 基于参数url更改主题,magento,events,observers,Magento,Events,Observers,我想知道我是否可以根据url参数更改主题(或者如果太晚了),以及是否可能观察哪个事件是正确的 我只找到一个家伙,他说要观察控制器的动作,但在这个事件中,我仍然无法访问参数url(基于这个答案)是的,你可以通过多种不同的方式来实现。答案并不是说URL参数在controller\u action\u predispatch事件中不可访问,但是您可能希望在类似controller\u action\u layout\u load\u before的事件中执行此操作。您可以在您的观察者中获得它们,如下所

我想知道我是否可以根据url参数更改主题(或者如果太晚了),以及是否可能观察哪个事件是正确的

我只找到一个家伙,他说要观察控制器的动作,但在这个事件中,我仍然无法访问参数url(基于这个答案)

是的,你可以通过多种不同的方式来实现。答案并不是说URL参数在
controller\u action\u predispatch
事件中不可访问,但是您可能希望在类似
controller\u action\u layout\u load\u before
的事件中执行此操作。您可以在您的观察者中获得它们,如下所示:

public function getExampleParam(Varien_Event_Observer $observer)
{
    $request = $observer->getControllerAction()->getRequest();
    $param = $request->getParam('example');
    return $this;
}

好的,我可以改变主题,问题是
$request=$observer->getControllerAction()->getRequest()
返回此错误:
调用非对象上的成员函数getRequest()
@Razorphyn-您是否使用了predispatch或其他事件?我尝试了您的事件,如果我显式声明它,我可以更改主题,因为我无法检索URL参数…所以现在我尝试使用控制器操作,但是我无法呈现产品(我已经打开了另一个问题)@Razorphyn-我必须看看传递给那个事件的是什么,但是对
Mage::app()->getRequest()
的快速而肮脏的全局调用可能会起作用。
Mage::app()->getRequest()
非常有效,谢谢