У меня есть продукты объект с полямиSymfony preUpdate событие в SonataAdminBundle
- имя,
- purch_price_net
- purch_price_gross
- purch_vat_value
- purch_vat_rate_id [из другой таблицы]
I необходимо, чтобы при редактировании пользователем в purch_price_net
поле, purch_price_gross
[и другие поля] автоматически меняют свои значения.
Так что я создал PreUpdateProducts
слушателя:
<?php
namespace AppBundle\EventListener;
use Doctrine\ORM\Events;
use AppBundle\Entity\Products;
// echo Events::preUpdate;
class PreUpdateProducts {
public function preUpdate(PreUpdateEventArgs $eventArgs) {
if ($eventArgs->getEntity() instanceof Products) {
if ($eventArgs->hasChangedField ('purchPriceNet')) {
$newPurchPriceNet = $eventArgs->getNewValue ('purchPriceNet');
$eventArgs->setNewValue ('purchPriceGross', $newPurchPriceNet * 1.23);
$eventArgs->setNewValue ('name', 'changedName'); // for tests
}
}
}
}
и в services.yml добавлено:
services:
[...]
my.listener:
class: AppBundle\EventListener\PreUpdateProducts
tags:
- { name: doctrine.event_listener, event: PreUpdateProducts }
Unfortunatelly это не работает, ничего не меняется [обособленно purchPriceNet] после нажатия кнопки 'Обновить'. Как я могу заставить его работать?
Как вы вызываете событие 'PraUpdateProducts'? Потому что в Symfony/Doctrine нет такого события. События жизненного цикла должны быть определены в сопоставлении сущности. http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#lifecycle-callbacks –
(возможно) вне темы, но использование множественного числа в имени объекта запрашивает проблемы , – greg0ire