php - 调用 createForm 时找不到服务 "form.factory"

标签 php symfony symfony4 symfony-4.2

我学习了一个类(class),其中有一个如何制作表格的示例。当我尝试它时,我收到 ServiceNotFoundException 错误,而且我在网络上的任何地方都找不到它。

Service "form.factory" not found: the container inside "App\Controller\MyTestController" is a smaller service locator that only knows about the "doctrine", "http_kernel", "parameter_bag", "request_stack", "router", "session" and "twig" services.

当我查看文档时,我遵循了每一步并制作了一个虚拟示例,但我仍然遇到错误。 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 中仍然有效吗?

最佳答案

它没有被弃用,但自 Symfony 4.0 或 4.1 以来默认情况下并未安装,因此您现在需要使用 composer 安装它。

composer require symfony/form

关于php - 调用 createForm 时找不到服务 "form.factory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54989464/

相关文章:

symfony - 如何更改某些 Controller 的 Monolog channel Symfony 3.4 或 4+

php - GPS坐标Mysql查询

php - 评估给定文本 block 的关键字密度

java - 我想限制我的网络服务网址只能从任何浏览器访问,只能从 Android 应用程序访问

symfony - 在 symfony 中将服务传递给自定义规范的构造函数的正确方法是什么

symfony - 如何让 Symfony 和 Twig 使用模板

php - 为什么我的 WordPress functions.php 无法加载样式或脚本?

symfony - 使用 Symfony2 包含第 3 方文件的最佳方法

php - 使用 symfony 4 在谷歌浏览器中显示多个图像的错误,而不是在 Firefox 中显示错误

php - Symfony2 创建左连接