2012-08-22 88 views
2

我在这个Observer上工作,将参数从页面加载中的URL中提取出来,并希望有人能帮助我弄清楚如何让这个工作得到我想要的。我只想让这个观察者在前端页面加载而不是后端开启。如果我将范围设置为像前一样,它不起作用。如果我将它改为全球,它会很好。我该如何补救?Magento事件观察者范围

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <modules> 
    <MyCompany_Mailchimp> 
     <version>1.0.0</version> 
    </MyCompany_Mailchimp> 
</modules> 
<frontend> 
    <events> 
     <controller_front_init_routers> 
      <observers> 
       <Mailchimp_observer> 
       <type>singleton</type> 
       <class>MyCompany_Mailchimp_Model_Observer</class> 
       <method>catchMailchimpParams</method> 
       </Mailchimp_observer> 
      </observers> 
     </controller_front_init_routers>  
    </events> 
</frontend> 
</config> 

回答

2

我不是100%肯定,但它看起来像事件controller_front_init_routers发稿前范围初始化之前。所以如果可能的话,你应该选择其他的事件,稍后再发射。我不太明白,你的任务是什么,但也许事件controller_action_predispatch可以接受?

+0

我的任务是检查URL中是否有一些参数,如果是,请将它们设置为用户的Cookie。所以我需要阅读http://mycompany.com/product-page.html?mc=3434,并取“mc”的值。我所有的这些都正确地与controller_front_init_routers一起工作,但我不需要它是全局的。我将研究controller_action_predispatch。 – jkphl

+1

如果您通过Mage :: app() - > getRequest() - > getParam()获取参数,那么它也应该与controller_action_predispatch一起使用。 –

1

尝试侦听controller_action_layout_load_before事件而不是controller_front_init_routers。此事件仅在前端触发。有关Magento事件列表的更多信息,请阅读here

+0

我也会给那一个镜头,谢谢! – jkphl

+0

如果遇到问题,请通知我:) – zuzuleinen