Session Magento路由器:如何捕获所有URL中的参数?

Session Magento路由器:如何捕获所有URL中的参数?,session,magento,router,affiliate,shop,Session,Magento,Router,Affiliate,Shop,想一想一个小的和基本的附属系统。我想要一个像 www.myshop.com/mynewproduct.html?afid=123 每次在URL中找到afid,都应该调用一个方法(基本上是在会话中保存“afid”,当客户购买东西时,我想跟踪它) 有人知道怎么做吗?每一个暗示都被接受;-) 这不需要路由器。您需要设置一个事件侦听器,为每个页面加载触发事件,然后访问请求集合中的变量。控制器前端初始化路由器事件应该执行 因此,使用以下命令设置模块的配置 <global> <e

想一想一个小的和基本的附属系统。我想要一个像

www.myshop.com/mynewproduct.html?afid=123
每次在URL中找到
afid
,都应该调用一个方法(基本上是在会话中保存“afid”,当客户购买东西时,我想跟踪它)


有人知道怎么做吗?每一个暗示都被接受;-)

这不需要路由器。您需要设置一个事件侦听器,为每个页面加载触发事件,然后访问请求集合中的变量。控制器前端初始化路由器事件应该执行

因此,使用以下命令设置模块的配置

<global>
    <events>
        <controller_front_init_routers>
            <observers>
                <packagename_modulename_observer>
                    <type>singleton</type>
                    <class>Packagename_Modulename_Model_Observer</class>
                    <method>interceptMethod</method>
                </packagename_modulename_observer>
            </observers>
        </controller_front_init_routers>    
    </events>
</global>

interceptMethod
可以根据需要命名

我知道这是一个非常古老的答案,但如果我们打算在会话中存储这些参数,我们不应该使用
controller\u front\u init\u routers
事件,这是正确的,这是原始问题的场景。例如,如果此时实例化
customer/session
,您将无法再执行客户登录。艾伦亲自指出了这一点。顺便说一句,谢谢艾伦的这篇好文章

app/code/local/Packagename/Modulename/Model/Observer.php
class Packagename_Modulename_Model_Observer {
    public function interceptMethod($observer) {
        $request    = $observer->getEvent()->getData('front')->getRequest();
        $afid       = $request->afid;

        //do whatever you want with your variable here
    }
}