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

问题描述 投票:-2回答:1

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

namespace App\Service;


class FormGenerator
{

public function createForm($slug,$request)
  {

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

    ....

但我收到错误消息:

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

php symfony oop service formbuilder
1个回答
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)解析为您选择的逻辑,最好通过在此服务类的订阅者的构造函数中对其进行类型提示。希望它更有意义

© www.soinside.com 2019 - 2024. All rights reserved.