我想从一个订阅者那里请求一个数据库
从存储库:我很容易使用下面的代码(例如实体用户,我想用id=1检索用户。
$repository = $this->getDoctrine()->getManager->getRepository('NameBundle:User');
$user = $repository->find(1);但是我怎么才能从一个悬疑者那里做到呢。
这是我尝试过的..。(没有成功,因为我从Sdz\BlogBundle\Form\EventListener\Subscriber::getEntityManager()“得到了以下内容:"FatalErrorException: Error: Call to undefined method Symfony2
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,
));
}
}发布于 2014-11-20 03:58:29
只需将其传递给构造函数(如果它不是一个服务):
class TraductionSubscriber implements EventSubscriberInterface
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
...并使用:
new TraductionSubscriber($em);发布于 2021-04-30 18:22:39
您可以通过容器获取Doctrine对象。
use Symfony\Component\DependencyInjection\ContainerInterface;
[...]
$this->container->get('doctrine')->getManager();https://stackoverflow.com/questions/27025692
复制相似问题