как получить доступ к хранилищу от слушателя

Я хотел бы сделать запрос к базе данных от подписчика

Из репозитория: легко использовать следующее (для примера сущности user, где я хочу получить пользователя с id = 1.

 $repository = $this->getDoctrine()->getManager->getRepository('NameBundle:User');
$user = $repository->find(1);

Но как я могу сделать это от абонента.

Вот что я попробовал … (без успеха, поскольку я получил следующее от Symfony2: «FatalErrorException: Ошибка: вызов неопределенного метода Sdz \ BlogBundle \ Form \ EventListener \ Subscriber :: getEntityManager ()»

namespace Sdz\BlogBundle\Form\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Doctrine\ORM\EntityRepository;

class TraductionSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(FormEvents::PRE_SET_DATA => 'preSetData');
}public function preSetData(FormEvent $event)
{
$form = $event->getForm();
$datas = $event->getData();

$userexist == 'no'

foreach ($datas as $data){
if ($data->getUser()->getId() == 1)     { $userexist = 'yes'; $user= $data->getUser();  }
}

if ($userexist == 'no') {
$repository = $this->getEntityManager()->getRepository('SdzBlogBundle:User');
$user = $repository->find(1);
}

$form
->add('notes', 'collection', array(
'type' => new NoteType,
'label' => $user->getName(),
'required' => false,
));
}
}

0

Решение

Просто передайте его конструктору (если это не сервис):

class TraductionSubscriber implements EventSubscriberInterface
{
private $em;

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

...

и использовать:

new TraductionSubscriber($em);
0

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

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

По вопросам рекламы [email protected]