Symfony 4: вызов функции-члена get () для null - PullRequest
0 голосов
/ 03 октября 2019
class EtudiantController extends AbstractController
{

    private $etudiant ;
    private  $form ;

    public function  __construct()
    {
        $this->etudiant = new Etudiant();
        $this->form = $this->createForm(EtudiantType::class, new Etudiant());

    }
}

** Я получил ошибку при создании экземпляра формы в конструкторе с использованием функции createForm() **enter image description here

1 Ответ

0 голосов
/ 03 октября 2019

Вот неправильный способ решения вашей проблемы:

class EtudiantController extends AbstractController
{
    private $form;

    public function __construct(FormFactoryInterface $formFactory)
    {
        $this->form = $formFactory->create(TextType::class, new Etudiant());
    }
}

Я говорю, что это неправильно (даже если это будет работать), потому что создание таких вещей, как формы, действительно должно выполняться в отдельных действиях контроллера, а не в скрытомв конструкторе. Возможно, вы пытаетесь применить «Не повторяйте себя» (СУХОЙ), но в подобных случаях «Не путайте свое будущее» имеет преимущество.

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

...