ZF3-从助手获取Cookie

时间:2018-07-11 10:05:38

标签: php cookies zend-framework3

我正在寻找一个问题。我开始使用ZendFramework3。现在,我必须从助手中的cookie中加载一些数据。

说明:cookie中有一个历史库存(索引数组)。我正在构建一个小菜单助手,该助手会获取一个列表并进行渲染(从ID等获取以进行渲染)。我的菜单在所有页面上。而且我不想进入所有控制器来执行类似

之类的更改操作代码
$this->getRequest()->getCookie();
...
return new ViewModel(["history" => $history]);

有一种简单的方法可以使助手自动获取历史记录中的值?

谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案, 我创建了一个帮助器工厂,然后将ContainerInterface发送给该帮助器:

public function __invoke(ContainerInterface $container, $requestedName, array $options = null){
        $em = $container->get('doctrine.entitymanager.orm');

        return new MenuWithCookie($container, $em);
    }

我在课堂上处理过它:

class MenuWithCookie extends AbstractHelper
{
    protected $_em;
    protected $_sm;

    public function __construct($container, $em)
    {
        $this->_sm = $container;
        $this->_em = $em;
    }

    public function __invoke($list, $option = [])
    {
        if (isset($option['from-cookie']) && $option['from-cookie']) {
            $req = $this->_sm->get('Request');
            $c = $req->getCookie();
            $cookieStuff = (isset($c['cookie-stuff'])) ? $c['history'] : NULL;
        }
        //Eat them all and do cool stuff
    }
}