Symfony 2.7: не удалось загрузить тип «Symfony \ Component \ Form \ Extension \ Core \ Type \ TextType» - PullRequest
0 голосов
/ 26 сентября 2018

Я работаю над приложением на основе Symfony 2.7.У меня есть пользовательский тип формы, содержащий следующий код:

namespace MyCompany\AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Validator\Constraints\NotBlank;

class ContactType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class,
                [
                    'attr'=>
                        [
                            'placeholder' => 'Your name'
                        ],
                    'constraints' =>
                        [
                            new NotBlank(['message' => 'Please provide your name'])
                        ]
                ]
            )
        ;
    }
...

... и когда я загружаю форму, я получаю следующее InvalidArgumentException:

Не удалось загрузить тип "Symfony \ Component \ Form \ Extension \ Core \ Type \ TextType "

Я проверил, что класс TextType существует.

Я пытался использовать дамп композитора, но это не помогло.Кроме того, я попытался удалить каталог vendor и повторить установку composer, но это тоже не помогло.

Что еще можно попробовать?

1 Ответ

0 голосов
/ 26 сентября 2018

Вы не можете использовать полные имена классов для обозначения типов форм в Symfony v2.7 - который был добавлен в v2.8.Вы должны обозначать свои типы, передавая вместо этого экземпляр:

$builder
    ->add('name', new TextType(),
        [
            'attr'        =>
                [
                    'placeholder' => 'Your name',
                ],
            'constraints' =>
                [
                    new NotBlank(['message' => 'Please provide your name']),
                ],
        ]
    );

Или используя сокращенное имя например text:

$builder
    ->add('name', 'text',
        [
            'attr'        =>
                [
                    'placeholder' => 'Your name',
                ],
            'constraints' =>
                [
                    new NotBlank(['message' => 'Please provide your name']),
                ],
        ]
    );

Symfony v2.7 больше не поддерживается, поэтому я настоятельно рекомендую обновить его до версии не ниже 2.8

...