Экземпляр построителя форм присутствует в AbstractController
(где его расширяет большинство контроллеров).Вот почему вы можете использовать $this->createFormBuilder()
.Но в этом случае вы создали отдельную службу, поэтому вам нужно разрешить построитель форм самостоятельно.
Я не уверен, как бы вы это сделали в Symfony, но согласно документации и этоссылка вы можете напечатать класс конструктора форм, и вы получите экземпляр в вашем методе.что-то вроде ниже
Код был обновлен для импорта FormBuilderInterface с помощью инжектора конструктора
use Symfony\Component\Form\FormBuilderInterface;
class FormGenerator
{
private $builder;
public function __construct(FormBuilderInterface $builder) {
$this->builder = $builder;
}
public function createForm($slug,$request)
{
$this->builder
->add('name')
->add('speciesCount')
->add('funFact')
}
}
Затем вам придется разрешить этот класс (FormGenerator
) с помощью DI в вашей логике выборажелательно путем намека на тип в конструкторе абонента этого класса обслуживания.Надеюсь, что это имеет немного больше смысла