Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取缓存驱动程序?(带条令/Redis缓存的Symfony2)_Symfony_Caching_Orm_Redis_Doctrine - Fatal编程技术网

如何获取缓存驱动程序?(带条令/Redis缓存的Symfony2)

如何获取缓存驱动程序?(带条令/Redis缓存的Symfony2),symfony,caching,orm,redis,doctrine,Symfony,Caching,Orm,Redis,Doctrine,为了在我的Symfony2应用程序中使用Redis Cache,我遵循了以下步骤(法语,对不起!) 一切都很好,除了我使用实体监听器的部分,它来自原则事件,用于在数据库写入时更新缓存。。。我有这样的服务: <?php namespace Maxpou\BeerBundle\Service; use Doctrine\ORM\Event\LifecycleEventArgs; use Maxpou\BeerBundle\Entity\Beer; class BeerListener {

为了在我的Symfony2应用程序中使用Redis Cache,我遵循了以下步骤(法语,对不起!)

一切都很好,除了我使用实体监听器的部分,它来自原则事件,用于在数据库写入时更新缓存。。。我有这样的服务:

<?php

namespace Maxpou\BeerBundle\Service;

use Doctrine\ORM\Event\LifecycleEventArgs;
use Maxpou\BeerBundle\Entity\Beer;

class BeerListener
{
    private $cacheDriver;

    public function __construct($cacheDriver)
    {
        $this->cacheDriver = $cacheDriver;
    }

    public function postPersist(Beer $beer, LifecycleEventArgs $args)
    {
        $this->cacheDriver->expire('[beers_all][1]', 0);
    }

    public function postUpdate(Beer $beer, LifecycleEventArgs $args)
    {
        $this->cacheDriver->expire('[beers_all][1]', 0);
    }

    public function postRemove(Beer $beer, LifecycleEventArgs $args)
    {
        $this->cacheDriver->expire('[beers_all][1]', 0);
    }
}
在我的实体中,我添加了以下注释:

* @ORM\EntityListeners({"Maxpou\BeerBundle\Service\BeerListener"})
当我尝试执行更新时,出现以下错误:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Maxpou\BeerBundle\Service\BeerListener::__construct(), 0 passed in /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php on line 73 and exactly 1 expected in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php:12
Stack trace:
#0 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php(73): Maxpou\BeerBundle\Service\BeerListener->__construct()
#1 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Event/ListenersInvoker.php(110): Doctrine\ORM\Mapping\DefaultEntityListenerResolver->resolve('Maxpou\\BeerBundle\\...')
#2 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1075): Doctrine\ORM\Event\ListenersInvoker->invoke(Object(Doctrine\ORM\Mapping\ClassMetadata), 'postUpdate', Object(Maxpou\BeerBundle\Entity\Beer), Object(Doctrine\ORM\Event\LifecycleEventArgs), 3)
#3 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(384): Doctrine\ORM\Unit in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php on line 12
看来,我的BeerListener中没有$cacheDriver参数

有人会知道为什么

PS:我使用“symfony/symfony”:“~2.5.0”,“条令/orm”:“~2.2”,“条令/条令包”:“~1.2”,“条令/条令缓存包”:“~1.0”,“snc/redis包”:“1.1.x”,“predis/predis”:“^1.0”(在NGINX/PHP-7.1 env中)

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Maxpou\BeerBundle\Service\BeerListener::__construct(), 0 passed in /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php on line 73 and exactly 1 expected in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php:12
Stack trace:
#0 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultEntityListenerResolver.php(73): Maxpou\BeerBundle\Service\BeerListener->__construct()
#1 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/Event/ListenersInvoker.php(110): Doctrine\ORM\Mapping\DefaultEntityListenerResolver->resolve('Maxpou\\BeerBundle\\...')
#2 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1075): Doctrine\ORM\Event\ListenersInvoker->invoke(Object(Doctrine\ORM\Mapping\ClassMetadata), 'postUpdate', Object(Maxpou\BeerBundle\Entity\Beer), Object(Doctrine\ORM\Event\LifecycleEventArgs), 3)
#3 /var/www/admin2/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(384): Doctrine\ORM\Unit in /var/www/admin2/src/Maxpou/BeerBundle/Service/BeerListener.php on line 12