我正在寻找一个问题。我开始使用ZendFramework3。现在,我必须从助手中的cookie中加载一些数据。
说明:cookie中有一个历史库存(索引数组)。我正在构建一个小菜单助手,该助手会获取一个列表并进行渲染(从ID等获取以进行渲染)。我的菜单在所有页面上。而且我不想进入所有控制器来执行类似
之类的更改操作代码$this->getRequest()->getCookie();
...
return new ViewModel(["history" => $history]);
有一种简单的方法可以使助手自动获取历史记录中的值?
谢谢。
答案 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
}
}