如何在Symfony2中设置引荐cookie?

时间:2014-12-01 16:57:52

标签: symfony

从几周开始,我就学习了Symfony2框架。这些天我决定建立一个项目,其中一个主要功能是"推荐逻辑"。 所以我的目标是在URL中添加? ref = something - 要从所有控制器创建和访问的引用cookie。

你能给我一些指南或资源吗?我想我应该使用Symfony2的EventDispatcher组件?

BTW我有一年的Kohana框架经验。我使用基本控制器开发的相同逻辑,由休息控制器继承。在Base Controller中,我编写了一个确定引用ID的方法,并设置了cookie。

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。在响应侦听器中设置cookie:

namespace Cerad\Bundle\CoreBundle\EventListener;

use Symfony\Component\HttpKernel\Event\FilterResponseEvent;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class P3PResponseListener implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return array
        (
            'kernel.response' => array(array('onKernelResponse', 10),)
        );
    }
    public function onKernelResponse(FilterResponseEvent $event)
    {
        // P3P Policy *** SET YOUR COOKIE HERE ***
        $event->getResponse()->headers->set('P3P', 
        'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    }
}

# services.yml

services:

    cerad_core__p3p_response_listener:
        class:  '%cerad_core__p3p_response_listener__class%'
        tags:
            - { name: kernel.event_subscriber }

http://symfony.com/doc/current/cookbook/service_container/event_listener.html