У меня есть problème с инициализации переменнойПолучить экземпляр доктрины в конструкторе контроллера
Мой контроллер:
namespace SB\FrontendBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManager;
use Mie\FrontendBundle\Entity\Product;
class FrontendController extends Controller
{
protected $em;
public function __construct(EntityManager $entityManager = null)
{
$this->em = $this->getDoctrine()->getManager(); //--->TEST 1
$this->em = $entityManager; //--->TEST2
}
public function dispatchUrl(Request $request)
{
$this->em = $this->getDoctrine()->getManager(); //--->TEST 3
$product = new Product();
$product->setName('A Foo Bar');
$product->setPrice('19.99');
$product->setDescription('Lorem ipsum dolor');
$this->em->persist($product);
$this->em->flush();
die();
}
}
В моей services.yml, в Сконфигурируйте прохождение доктрины службы на мой контроллер FrontendController
parameters:
mie.frontend.controller.frontend.class: Mie\FrontendBundle\Controller\FrontendController
services:
# ---> ESSAI 1
mie.frontend.controller:
class: "%mie.frontend.controller.frontend.class%"
arguments:
- "@doctrine.orm.entity_manager"
# ---> ESSAI 2
mie.frontend.controller:
class: "%mie.frontend.controller.frontend.class%"
arguments: [ @doctrine.orm.entity_manager ]
# ---> ESSAI 3
# mie.frontend.controller:
# class: "%mie.frontend.controller.frontend.class%"
# calls:
# - [setEntityManager, ["@doctrine.orm.entity_manager"]]
- ТЕСТ 1 не работает
- ТЕСТ 2 с ESSAI 1,2,3 (services.yml) doesn'twork
- ТЕСТ 3 работы
с тестовыми 1, я получаю следующее сообщение об ошибке: Ошибка: Вызов функции члена имеет() на нуль в поставщика \ Symfony \ Symfony \ SRC \ Symfony \ Bundle \ FrameworkBundle \ Controller \ controller.php в строке 291
С ТЕСТА 2 $ EntityManager (аргумент __construct) является NULL
I не читайте ничего против инициализации, в контроллере переменной с экземпляром entitymanager. С Symfony2.3, TEST 2 работает, я думаю.
Я что-то забыл в конфигурации доктрины?
спасибо,
Phil
спасибо, ваше решение работает! Но это правда, мне не нужен сервис, поэтому я использую решение @scoolnico – Philalawst