Symfony 4.3:FormType添加额外的“实体”类型

时间:2019-03-16 12:07:49

标签: 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 个答案:

答案 0 :(得分:1)

似乎您使用的是Symfony的NumberType,而不是您自己的。

检查AdminController文件顶部的名称空间,该名称空间正在使用NumberType

如果有:

use Symfony\Component\Form\Extension\Core\Type\NumberType;

这意味着您使用的是错误的课程。

应该是这样的:

use App\Some\Namespace\To\Your\NumberType;