Events Symfony2事件\u侦听器未启动
我使用的是Symfont RC5,我正在尝试启动事件侦听器Events Symfony2事件\u侦听器未启动,events,symfony,doctrine-orm,Events,Symfony,Doctrine Orm,我使用的是Symfont RC5,我正在尝试启动事件侦听器prePersist 在app/config/config.yml中,我有:- services: recordmanagement: class: FNQITServices\BMBundle\Listener\RecordManagement tags: - { name: doctrine.event_listener, event: prePersist } 我创建了一个类src/F
prePersist
在app/config/config.yml
中,我有:-
services:
recordmanagement:
class: FNQITServices\BMBundle\Listener\RecordManagement
tags:
- { name: doctrine.event_listener, event: prePersist }
我创建了一个类src/FNQITServices/BMBundle/Listener/RecordManagement.php
:-
<?php
namespace FNQITServices\BMBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use FNQITServices\BMBundle\Entity\Elections;
use FNQITServices\BMBundle\Entity\People;
class RecordManagement
{
public function prePersist(LifecycleEventArgs $args)
{
`echo "amibeingcalled" > /tmp/test`;
$entity = $args->getEntity();
$entityManager = $args->getEntityManager();
// perhaps you only want to act on some "Product" entity
if ($entity instanceof Elections) {
$person = $this->getDoctrine()
->getRepository('FNQITServicesBMBundle:People')
->find(2);
$entity->setCreator($person);
}
}
}
试试看
及
试试看
及
也许这不是问题所在,但您使用的是非常旧的symfony版本。可能首先尝试升级到最新的stable(目前为2.0.12)可能这不是问题所在,但您使用的是非常旧的symfony版本。可能首先尝试升级到最新的stable(目前为2.0.12)也有同样的问题
只需使用Symfony 2.0.12(当前版本)和sonata进行相同的测试,它似乎不起作用。我现在使用onFlush事件来满足我的需要
似乎SonataOctrineorAdmin没有正确计算变更集,因为每个字段都会更新,所以您必须手动检查。也有同样的问题
只需使用Symfony 2.0.12(当前版本)和sonata进行相同的测试,它似乎不起作用。我现在使用onFlush事件来满足我的需要
似乎SonataOctrineorAdmin没有正确计算变更集,因为每个字段都会更新,所以您必须手动检查。我在src/Acme/BMBundle/Resources/config中创建了services.xml,如下所示:-
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="acme_bm.listener" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="prePersist" method="prePersist"/>
</service>
<service id="acme_bm.listener2" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="preUpdate" method="preUpdate"/>
</service>
</services>
</container>
<?php
namespace ACME\BMBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\PreUpdateEventArgs;
use Symfony\Component\DependencyInjection\ContainerInterface;
class RecordManagement
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function prePersist(LifecycleEventArgs $args)
{
.
.
.
}
.
.
.
.
}
然后我创建了Listener/RecordManagement.php,如下所示:-
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="acme_bm.listener" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="prePersist" method="prePersist"/>
</service>
<service id="acme_bm.listener2" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="preUpdate" method="preUpdate"/>
</service>
</services>
</container>
<?php
namespace ACME\BMBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\PreUpdateEventArgs;
use Symfony\Component\DependencyInjection\ContainerInterface;
class RecordManagement
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function prePersist(LifecycleEventArgs $args)
{
.
.
.
}
.
.
.
.
}
我在src/Acme/BMBundle/Resources/config中创建了services.xml,如下所示:-
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="acme_bm.listener" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="prePersist" method="prePersist"/>
</service>
<service id="acme_bm.listener2" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="preUpdate" method="preUpdate"/>
</service>
</services>
</container>
<?php
namespace ACME\BMBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\PreUpdateEventArgs;
use Symfony\Component\DependencyInjection\ContainerInterface;
class RecordManagement
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function prePersist(LifecycleEventArgs $args)
{
.
.
.
}
.
.
.
.
}
然后我创建了Listener/RecordManagement.php,如下所示:-
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="acme_bm.listener" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="prePersist" method="prePersist"/>
</service>
<service id="acme_bm.listener2" class="ACME\BMBundle\Listener\RecordManagement">
<argument type="service" id="service_container" />
<tag name="doctrine.event_listener" event="preUpdate" method="preUpdate"/>
</service>
</services>
</container>
<?php
namespace ACME\BMBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\PreUpdateEventArgs;
use Symfony\Component\DependencyInjection\ContainerInterface;
class RecordManagement
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function prePersist(LifecycleEventArgs $args)
{
.
.
.
}
.
.
.
.
}
用sonata admin在2.0.12版中测试它不起作用他是对的,但是预更新被触发了,但是有一个错误的更改在2.0.12版中用sonata admin测试它不起作用他是对的,但是预更新被触发了,但是有一个错误的更改我很确定我试过这样的东西。。。最后,我在src/ACME/BMBundle/Resources/config下创建了services.xml,然后它似乎找到了监听器定义。所以把它放在config.yml是个问题。我肯定我试过这样的方法。。。最后,我在src/ACME/BMBundle/Resources/config下创建了services.xml,然后它似乎找到了监听器定义。所以把它放在config.yml是个问题。你能解释一下你在那里做了什么吗?;)你能解释一下你在那里做了什么吗