Я пытаюсь создать preUpdate, я делал это с postUpdate, но я не учитывал тот факт, что я менялся всякий раз, когда производилось редактирование этого объекта, независимо от поля... поэтому я прочитал, что должен вместо этого используйте preUpdate...
Это мой прослушиватель preUpdate:
namespace Prizes\PrizesBundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Prizes\PrizesBundle\Entity\Prize;
use Prizes\CatalogBundle\Entity\CatalogHasPrize as CHP;
/**
* Description of DeactivatePrizesInCatalog
*
* @author Victoria Noguera
* Desactiva premios en catalogos cuando se desactiven en el prize central.
*/
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
class DeactivatePrizesInCatalog {
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpdate(LifecycleEventArgs $args) {
$entity = $args->getEntity();
$entityManager = $args->getEntity
Manager();
if ($entity instanceof Prize) {
if ($args->hasChangedField('status')) {
$status_new = $args->getNewValue('status');
if ($status_new->getName() == "Inactive") {
$statusinactive = $entityManager->getRepository('AppStatusBundle:Status')->find(8);
$q = $entityManager->createQuery("UPDATE CatalogBundle:CatalogHasPrize c SET c.status = :statusid WHERE c.status = 7 AND c.prize = :prizeid")
->setParameters(array('statusid' => $statusinactive, 'prizeid' => $entity->getId()));
$rs = $q->getResult();
} else if ($status_new->getName() == "Active") {
$statusinactive = $entityManager->getRepository('AppStatusBundle:Status')->find(7);
$q = $entityManager->createQuery("UPDATE CatalogBundle:CatalogHasPrize c SET c.status = :statusid WHERE c.status = 8 AND c.prize = :prizeid")
->setParameters(array('statusid' => $statusinactive, 'prizeid' => $entity->getId()));
$rs = $q->getResult();
}
}
}
}
}
и именно так я делаю это в файле config.yml (я только что прочитал, что он входит в services.yml, но я изменю его позже)
services:
preupdate.listener:
class: Prizes\PrizesBundle\EventListener\DeactivatePrizesInCatalog
tags:
- { name: doctrine.event_listener , event: preUpdate }
однако, когда я это делаю, мой проект переходит от полностью функционального к сервису 503, недоступному. Даже если я просто напишу public function preUpdate(LifecycleEventArgs $args) { }
, он вылетит, я предполагаю, что проблема с конфигурацией, но я понятия не имею, что я делаю неправильно.
Буду признателен за любую предложенную помощь. Спасибо