Я следую за доктриной ORM Symfony2 Documentation. Когда дело доходит до Упорно объектов в базу данных я получаю эту ошибку:Symfony2 инъекционная сущностьManager error
Attempted to call an undefined method named "getDoctrine" of class "BooksApi\BookBundle\Controller\IndexController".
Единственное, что я делаю по-другому в моем коде, что я пытаюсь создать EntityManager как сервис ....
services.xml:
<?xml version="1.0" encoding="UTF-8"?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="booksapi.controller.index"
class="BooksApi\BookBundle\Controller\IndexController">
<argument type="service" id="booksapi.repositories.test_repository" />
<argument type="service" id="doctrine.orm.entity_manager" />
</service>
</services>
</container>
мой индекс контроллера:
<?php
namespace BooksApi\BookBundle\Controller;
use BooksApi\BookBundle\Entity\BooksEntity;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\Response;
class IndexController
{
/**
* @var EntityManager
*/
public $em;
/**
* @param EntityManager $entityManager
*/
public function __construct(
EntityManager $entityManager
){
$this->em = $entityManager;
}
/**
* @return Response
*/
public function testAction()
{
$book = new BooksEntity();
$book->setTitle('Tomazi in da Jungle');
$book->setPrice('19.99');
$book->setDescription('Lorem ipsum dolor');
$this->em = $this->getDoctrine()->getManager();
$this->em->persist($book);
$this->em->flush();
return new Response('Created product id '.$book->getId());
}
}
Так, глядя на е Метод rror getDoctrine не распознается .... любая идея, почему ...? Как это исправить.
Вы не хватаете очевидные. $ this-> em устанавливается в вашем конструкторе, поэтому удалите $ this-> em = $ this-> getDoctrine() -> getManager(); и все будет хорошо. – Cerad