Я очень новичок в Symfony. Я начал свой первый проект в Symfony 2.3 LTS. В это время я создал множество контроллеров в разных пакетах. Мой вопрос связан с правильной процедурой. Я использую в своих диспетчерах разные службы, такие как «переводчик», «фабрика форм», «сеанс», «роутер», «сущ.», «Шаблон».Отступ впрыска на базе Контроллер/Сервис
Я создаю в моем «service.yml» базовый сервис
myapp.controller.base:
class: "%myapp.controller.base.class%"
arguments: ["@doctrine.orm.entity_manager", , "@templating", "@session", "@translator", "@router", "@form.factory"]
и ввести базовую услугу в мой контроллер, который также является услугой.
myapp.controller.locales:
class: "%myapp.controller.locales.class%"
arguments: ["@myapp.controller.base"]
Мое базовое обслуживание выглядит следующим образом.
namespace MyApp\<BundleName>\Controller;
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
use Symfony\Component\HttpFoundation\Session\Session;
class BaseController
{
protected $formErrorService;
protected $entityManager;
protected $templating;
protected $session;
protected $translator;
protected $router;
protected $formFactory;
public function __construct($entityManager, EngineInterface $templating, Session $session, $translator, $router, $formFactory)
{
$this->setEntityManager($entityManager);
$this->setTemplating($templating);
$this->setSession($session);
$this->setTranslator($translator);
$this->setRouter($router);
$this->setFormFactory($formFactory);
}
public function setEntityManager($em)
{
$this->entityManager = $em;
}
public function getEntityManager()
{
return $this->entityManager;
}
общественная функция setTemplating ($ шаблонный) { $ this-> шаблонный = $ шаблонный; }
public function getTemplating()
{
return $this->templating;
}
public function setSession($session)
{
$this->session = $session;
}
public function getSession()
{
return $this->session;
}
public function setTranslator($translator)
{
$this->translator = $translator;
}
public function getTranslator()
{
return $this->translator;
}
public function setRouter($router)
{
$this->router = $router;
}
public function getRouter()
{
return $this->router;
}
public function setFormFactory($formFactory)
{
$this->formFactory = $formFactory;
}
public function getFormFactory()
{
return $this->formFactory;
}
}
И я вызываю в моей локали контроллер выглядеть следующим образом
namespace MyApp\<Bundlename>\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Session\Session;
class LocalesController extends BaseController
{
protected $baseService;
public function __construct($baseService)
{
$this->baseService = $baseService;
}
public function indexAction(Request $request)
{
$locales=$this->baseService->getEntityManager()->getRepository('<reponame>')->findAll();
return $this->baseService->getTemplating()->renderResponse('<templatename>', array('locales' => $locales));
}
Является ли это правильная процедура? Должен ли я использовать эту процедуру в контроллере ervery, который мне нужен?
Я надеюсь, что я получить полезные советы, большое спасибо