如何在服务(Symfony4)中解析FormBuilder?

时间:2019-03-05 16:04:42

标签: php symfony oop service formbuilder

我尝试在我的服务中创建一个表单:

namespace App\Service;


class FormGenerator
{

public function createForm($slug,$request)
  {

    $item = new $EntityName();
    $formBuilder = $this->createFormBuilder($item);

    ....

但是我收到错误消息:

  

试图调用一个未定义的名为“ createFormBuilder”的方法   类“ App \ Service \ FormGenerator”。

1 个答案:

答案 0 :(得分:4)

AbstractController中存在表单构建器实例(大多数控制器在其中进行扩展)。这就是为什么您可以使用$this->createFormBuilder()的原因。但是在这种情况下,您已经创建了一个单独的服务,因此您需要自己解决表单生成器。

我不确定您将如何在Symfony中执行此操作,但是根据文档和this link,您可以键入提示表单生成器类,然后将在您的方法中获取实例。像下面这样

代码已更新,可以通过构造函数注入导入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')
   }
} 

然后,您将必须通过DI将此类(FormGenerator)解析为您选择的逻辑,最好是通过在此服务类的订户的构造函数中键入它的类型来进行提示。希望这更有意义