Ошибка при создании формы: Не удалось загрузить тип CustomType

Ошибка при выполнении метода createForm.

InvalidArgumentException: Could not load type "ArticleType"

Моя версия symfony 3.3.*.

Я попытался выполнить метод createForm с Article::class вместо ArticleType::class.

Вот мой код, где проблема?

ArticleController.php

public function createAction(Request $request)
{
    $article = new Article();

    $form = $this->createForm(ArticleType::class, $article);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        // ...
    }

    return $this->render('admin/article/create.html.twig', [
        'form' => $form->createView()
    ]);
}

ArticleType.php

class ArticleType extends AbstractType
{
    private $categoryService;
    private $tagService;

    public function __construct(CategoryService $categoryService, TagService $tagService)
    {
        $this->categoryService = $categoryService;
        $this->tagService = $tagService;
    }

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */.
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // ...
    }

    public function setDefaultOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'CMS\Bundle\ContentBundle\Entity\Article'
        ]);
    }
}

Resources/config/services.yml (входит в app/config/services.yml)

services:
  CMS\Bundle\ContentBundle\Form\ArticleType:
    arguments: ['@cms.core.service.category', '@cms.core.service.tag']
    tags: [form.type]

.


person Umut Çağdaş Coşkun    schedule 10.10.2017    source источник
comment
Ваши теги неверны, я думаю, они вам даже не нужны в symfony 3.3, но вы должны использовать их как tags: - { name: form.type }   -  person kunicmarko20    schedule 10.10.2017
comment
@ kunicmarko20 Я пробовал так, но ошибка все еще существует. :( Спасибо.   -  person Umut Çağdaş Coşkun    schedule 10.10.2017
comment
@ kunicmarko20 - Просто для информации, начиная с 3.3 действительно существует альтернативный и упрощенный подход к указанию тегов, когда все, что вам нужно, это имя. На самом деле, этот тег вообще больше не нужен, поскольку все, что происходит от AbstractType, автоматически помечается тегом form.type. Это почти наверняка проблема пространства имен.   -  person Cerad    schedule 10.10.2017
comment
@Cerad Я так и думал, так как не зарегистрировал ни один из своих типов форм в текущем проекте 3.3 :), спасибо за информацию   -  person kunicmarko20    schedule 10.10.2017


Ответы (1)


Похоже, ваш пользовательский класс формы не может быть найден в текущем пространстве имен. Попробуйте добавить use CMS\Bundle\ContentBundle\Form\ArticleType; (или что-то подобное) в свой контроллер.

person Mitchel    schedule 10.10.2017