Я работаю над проектом, в котором мы используем DependencyInjection
, поэтому у меня есть src\Common\CommonBundle\Resources\config\services.yml
следующее определение:
services:
address.form:
class: Wuelto\Common\CommonBundle\Controller\FormAddressController
arguments: [@form.factory, @doctrine.orm.entity_manager]
address_extra_info.form:
class: Wuelto\Common\CommonBundle\Controller\FormAddressExtraInfoController
arguments: [@form.factory, @doctrine.orm.entity_manager]
И src\Company\RegisterCompanyBundle\Resources\config\services.yml
services:
registercompany.form:
class: Wuelto\Company\RegisterCompanyBundle\Controller\FormRegisterCompanyController
arguments: [@form.factory, @doctrine.orm.entity_manager]
И это код контроллеров (только один, остальные одинаковые, только классы меняются):
class FormAddressExtraInfoController {
public function __construct(FormFactoryInterface $formFactory, EntityManager $em) {
$this->formFactory = $formFactory;
$this->em = $em;
}
private function getEntity($id) {
$entity = new AddressExtraInfo();
try {
if (isset($id)) {
$entity = $this->em->getRepository("CommonBundle:AddressExtraInfo")->find($id);
}
} catch (\Exception $e) {
}
return $entity;
}
public function getAction($id = null) {
$entity = $this->getEntity($id);
$form = $this->formFactory->create(new AddressExtraInfoType($id), $entity, array('method' => 'POST'));
return array('formAddressExtraInfo' => $form->createView());
}
}
Так вот проблема. В другом контроллере (\Website\FrontendBundle\Controller\sellerController.php
) вне этих пакетов я пытаюсь получить представление $formXXX
, используя этот фрагмент кода:
$this->render('FrontendBundle:Seller:newSellerLayout.html.twig', array($this->get('registercompany.form')->getAction(), $this->get('address_extra_info.form')->getAction()));
Но я получаю эту ошибку:
Переменная formCompany не существует в FrontendBundle:Seller:newCompany.html.twig в строке 10.
Причина? Я не передаю значения, как должно быть, но удивлюсь, если я передам их как:
$this->render('FrontendBundle:Seller:newSellerLayout.html.twig', array('formCompany' => $this->get('registercompany.form')->getAction(), 'formAddressExtraInfo' => $this->get('address_extra_info.form')->getAction()));
Затем ошибка превращается в это:
ContextErrorException: Catchable Fatal Error: Аргумент 1, переданный в Symfony\Component\Form\FormRenderer::renderBlock(), должен быть экземпляром Symfony\Component\Form\FormView, заданным массивом
Я не знаю, как это исправить или где я делаю что-то не так?