Служба "form.factory" не найдена при вызове createForm - PullRequest
0 голосов
/ 04 марта 2019

Я следую за классом, где есть пример, как сделать форму.Когда я пытаюсь это сделать, я получаю ошибку ServiceNotFoundException и не могу найти ее нигде в Интернете.

Служба "form.factory" не найдена: контейнер внутри "App \ Controller \ MyTestController"меньший сервисный локатор, который знает только об услугах «doctrine», «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 голосов
/ 04 марта 2019

Это не рекомендуется, но не устанавливается по умолчанию, начиная с Symfony 4.0 или 4.1, поэтому вам нужно установить его сейчас с помощью composer.

composer require symfony/form
...