Symony2 Форма доступа в сущности prePersist?

Название говорит обо всем. Я хочу иметь возможность доступа к форме из моей функции prePersist в моей сущности. Что-то вроде этого:

/** @ORM\PrePersist */
public function prePersist()
{
//Symfony 1.4 way
$params     = sfContext::getInstance()->getRequest()->getParameterHolder()->getAll();
$this->gps84Long=$params['coordinate']['gps_84_lat_degrees'];

}

Причина, по которой я нуждаюсь в этом, заключается в том, что значения формы не отображаются в поля базы данных. Мне нужно объединить 2-3 поля формы в одно значение, чтобы поместить в одно поле в моей сущности.

EDIT — добавлено .yml дополнение для предоставленного ответа:

services:

my.doctrine.subscriber:
class:  myCompany\myBundle\Models\MyDoctrineSubscriber
arguments:  [@form.factory,"@request_stack"]
tags:
- { name: 'doctrine.event_subscriber', connection: 'default' }

1

Решение

Мое предложение состоит в том, чтобы создать Учение подписчика и введите любой сервис, который вы хотите (пример xml):

service.xml

<service id="my.doctrine.subscriber" class="%my.doctrine.subscriber.class%">
<argument type="service" id="form.factory" />
<argument type="service" id="request_stack" />
<tag name="doctrine.event_subscriber" connection="default" />
</service>

MyDoctirneSubscriber

class MyDoctirneSubscriber implements EventSubscriber
{
private $formFactory;

private $requestStack;

/**
* @param ContainerInterface $container
*/
public function __construct(FormFactoryInterface $formFactory, RequestStack $requestStack)
{
$this->formFactory = $formFactory;
$this->requestStack = $requestStack;
}

/**
* @return array
*/
public function getSubscribedEvents()
{
return [
'prePersist',
...
];
}

/**
* @param LifecycleEventArgs $eventArgs
*/
public function prePersist(LifecycleEventArgs $eventArgs)
{
$entityManager = $eventArgs->getEntityManager();
$entity = $eventArgs->getEntity();

if ($entity instanceof MyEntity) {
$request = $this->requestStack->getCurrentRequest();

$form = $this->formFactory->create(TYPE, DATA_OR_NULL, OPTIONS);

$form->handleRequest($request);

....
}
}

....
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector