Catchable Fatal Error: Аргумент 1, передаваемый в Controller :: __ construct (), должен быть экземпляром Doctrine \ ORM \ EntityManager, ни один не задан, вызван

Контроллер уведомлений

<?php
namespace Main\AdminBundle\Controller;
/* included related namespace */
use Symfony\Component\PropertyAccess\PropertyAccess;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Query;

use Main\AdminBundle\Entity\Notificationmaster;

class NotificationController extends BaseController
{
protected $session;
protected  $em;

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

/**
* @Route("/Notification1/{salon_id}",defaults={"salon_id":""})
* @Template()
*/
public function indexAction($salon_id)
{
return array("j"=>"jj");
}

/**
* @Route("/Notification/create/{notification_type}/{notification_title}",defaults={"notification_type":"","notification_title":""})
*/
public function notificationcreateAction($notification_type,$notification_title)
{
//$this->em = $em;

$notificationmaster = new Notificationmaster();
$notificationmaster->setNotification_type($notification_type);
$notificationmaster->setNotification_title($notification_title);
$em = $this->getDoctrine()->getManager();
$em->persist($notificationmaster);
$em->flush();
return $notificationmaster->getNotification_master_id();
}
/**
* @Route("/Notification/List/{notification_for}/{notification_to}/{lang_id}",defaults={"notification_for":"","notification_to":"","lang_id":""})
*/
public function notificationlistAction($notification_for,$notification_to,$lang_id)
{
//$em = $this->getDoctrine()->getManager();
return new Response(json_encode("hi"));

}
}

в файле ветки

 {% set notification_html = render(controller('MainAdminBundle:Notification:notificationlist',{"notification_for":"organization","notification_to":"1","lang_id":"1"})) %}

Базовый контроллер

class BaseController extends Controller{

public function __construct()
{
date_default_timezone_set("Asia/Calcutta");
}
}

я получил эту ошибку, когда я вызываю действие списка уведомлений, используя Twig file( as above )

Catchable Fatal Error: Аргумент 1 передан в Controller :: __ construct ()
должен быть экземпляром Doctrine \ ORM \ EntityManager, ни один не задан, вызван

если я удаляю менеджер сущностей, то я получаю ошибку при создании действия

Ошибка: вызов функции-члена has () для необъекта

потому что я называю это создать действие, используя это

$notification = new NotificationController($em);
$notification_id = $notification->notificationcreateAction('appointment_book','New  Appointment');

поэтому я должен добавить менеджера сущностей.

0

Решение

Прежде всего, для устранения этой конкретной ошибки. Если ваш вопрос содержит весь NotificationController, кажется, нет необходимости определять конструктор ни если менеджер элементов хранится в переменной класса — ваш responsecreateAction извлекает экземпляр менеджера сущностей из доктрины и не использует переменную класса. То есть просто полностью удалите конструктор и переменную класса:

class NotificationController extends BaseController
{
protected $session;

/**
* @Route("/Notification1/{salon_id}",defaults={"salon_id":""})
* @Template()
*/
public function indexAction($salon_id)
{
return array("j"=>"jj");
}

// and so forth...

И обновите свой код, который вы используете на вашем контроллере, чтобы:

$notification = new NotificationController();
$notification_id = $notification->notificationcreateAction('appointment_book','New  Appointment');

Чтобы ответить на вопрос более обобщенно

Вы не должны создавать экземпляры контроллеров в разных контроллерах. Вместо этого вам следует создать службу для вашего общего кода, которую вы можете вызывать со всех ваших контроллеров. Подробнее об услугах Symfony: Сервисный контейнер

2

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

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

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