Symfony 4.3: FormType добавляет дополнительный тип «Сущности»

#php #symfony

#php #symfony

Вопрос:

Я хочу создать форму для регистрации новой, Number поэтому я создал NumberType (код ниже). Но в верхней части формы добавляется поле, как показано ниже :

 <input type="text" id="number" name="number" required="required" class="form-control">
  

NumberType.php

 public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('created_by', EmailType::class, [
            'label' => 'Email *',
            'attr' => array(
                'placeholder' => 'monadresse@mail.fr',
            )
        ])
        ->add('title', TextType::class, [
            'label' => 'Titre *'
        ])
        ->add('value', TextType::class, [
            'label' => 'Valeur *'
        ])
        ->add('source', UrlType::class, [
            'label' => 'Source *'
        ])
        ->add('description', TextareaType::class, [
            'label' => 'Description',
            'required' => false,
            'attr' => array(
                'placeholder' => 'Description du chiffre proposé'                    
            )
        ])
        ->add('tags')
        ->add('recaptcha', EWZRecaptchaType::class)
        ->add('send', SubmitType::class, ['label' => 'Envoyer'])
    ;
}
  

AdminController.php

 $number = new Number();
// Form creation
$form = $this->createForm(NumberType::class, $number);
  

Когда я вызываю URL, связанный с моей функцией в моем контроллере, у меня была ошибка, которая гласила

Не удается преобразовать число в строку

Итак, я добавил __tostring() функцию, но я не понимаю, зачем она ему нужна.

Спасибо,

Ответ №1:

Похоже, вы используете Symfony NumberType вместо своего собственного.

Проверьте пространство имен в верхней части AdminController файла, которое NumberType используется.

Если есть:

 use SymfonyComponentFormExtensionCoreTypeNumberType;
  

тогда это означает, что вы используете неправильный класс.

Это должно быть что-то вроде:

 use AppSomeNamespaceToYourNumberType;
  

Комментарии:

1. Спасибо за ваш ответ. На самом деле я использую хороший use AppFormNumberType; . Я просто разобрался с этим, я переименовал NumberType в MyNumberType , и пока все хорошо: D