调用createForm

时间:2019-03-04 18:35:15

标签: php symfony symfony4 symfony-4.2

我跟随一堂课,那里有一个如何制作表格的示例。当我尝试它时,出现ServiceNotFoundException错误,并且在网络上的任何地方都找不到它。

  

找不到服务“ form.factory”:里面的容器   “ App \ Controller \ MyTestController”是一个较小的服务定位器,它   只知道“教义”,“ http_kernel”,“ parameter_bag”,   “ request_stack”,“ router”,“ session”和“ twig”服务。

当我查看文档时,我遵循了每个步骤并创建了一个虚拟示例,但仍然出现错误。 https://symfony.com/doc/current/best_practices/forms.html

当我在Controller.php中调用函数createForm()时,出现此错误:

public function add($id, Request $request)
{
    $ads = new Ads();
    $form = $this->createForm(AdsType::class, $ads);
}

在整个项目中,我按Ctrl-F组合键“ form.factory”,看起来像安装程序。

该函数进入ControllerTrait:

    C:\Users\Marcel\Documents\Projects\PHP\Symfony\OpenClassRoom\vendor\symfony\framework-bundle\Controller\ControllerTrait.php:
  314      protected function createForm(string $type, $data = null, array $options = []): FormInterface
  315      {
  316:         return $this->container->get('form.factory')->create($type, $data, $options);
  317      }
  318  
  ...
  324      protected function createFormBuilder($data = null, array $options = []): FormBuilderInterface
  325      {
  326:         return $this->container->get('form.factory')->createBuilder(FormType::class, $data, $options);
  327      }

在AbstractController中:

C:\Users\Marcel\Documents\Projects\PHP\Symfony\OpenClassRoom\vendor\symfony\framework-bundle\Controller\AbstractController.php:
       84              'twig' => '?'.Environment::class,
       85              'doctrine' => '?'.ManagerRegistry::class,
       86:             'form.factory' => '?'.FormFactoryInterface::class,
       87              'security.token_storage' => '?'.TokenStorageInterface::class,
       88              'security.csrf.token_manager' => '?'.CsrfTokenManagerInterface::class,

在Symfony 4.2中仍然有效吗?

1 个答案:

答案 0 :(得分:1)

它不被弃用,但自Symfony 4.0或4.1起默认未安装,因此您现在需要使用作曲家进行安装。

composer require symfony/form