Symfony 表单验证实体类型

史蒂夫·M

对于联系表格,我有两个实体。

class ContactRequest
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    [...]

    /**
     * @ORM\ManyToOne(targetEntity="ContactCategory")
     * @ORM\Column(name="type", type="integer")
     */
    private $type;

    /**
     * @var string
     *
     * @ORM\Column(name="message", type="text", nullable=false)
     */
    private $message;


    [...]


}

class ContactCategory
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    [...]


    public function __toString()
    {
        return $this->getName();
    }
}

然后我的表格

class ContactRequestType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('requesterFirstname', Type\TextType::class, array('label' => 'Prénom'))
            ->add('requesterLastname', Type\TextType::class, array('label' => 'Nom'))
            ->add('requesterMail', Type\EmailType::class, array('label' => 'Email'))
            ->add('requesterPhone', Type\TextType::class, array('label' => 'Téléphone'))
            ->add('message', Type\TextareaType::class, array('label' => 'Message'))
            $builder->add('type', EntityType::class, [
                'class' => 'CargoApiBundle:ContactCategory',
                'group_by' => 'group',
                'query_builder' => function (EntityRepository $er) use ( $options ) {
                    return $er->createQueryBuilder('cc')
                        ->where('cc.site = :site')->setParameter('site', $options['site'])
                        ->orderBy('cc.group', 'ASC')
                        ->orderBy('cc.name', 'ASC');
                }
            ]);

    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'short' => false,
            'site' => null,
            'data_class' => 'Cargo\ApiBundle\Entity\ContactRequest'
        ]);
    }
}

显示效果很好,但是当我提交表单时,它会在类型字段“此值应为整数类型”上引发错误。似乎合乎逻辑,因为它必须是我的联系人类别的 ID。

所以我查看了表单生成的代码,没有发现任何问题:

<select id="contact_request_type" name="contact_request[type]" class="form-control">
    <optgroup label="Général">
        <option value="4">Autre</option>
        <option value="3">Du partenariat/sponsoring</option>
        <option value="1">Le fonctionnement de l'association</option>
        <option value="2">Un tournoi internationnal</option>
    </optgroup>
    <optgroup label="Une section">[...]</optgroup>
    <optgroup label="Le site">[...]</optgroup>
</select>

所以我转储了请求内容以查看提交的内容并得到了这个:

array (size=3)
  'action' => string 'contact_send' (length=12)
  'contact_request' => 
    array (size=7)
      'requesterFirstname' => string 'Kiro' (length=5)
      'requesterLastname' => string 'Staz' (length=4)
      'requesterMail' => string '[email protected]' (length=18)
      'requesterPhone' => string '0000000000' (length=10)
      'type' => string '2' (length=1)
      'message' => string 'test' (length=17)
      '_token' => string '32LuZWWh8h-6lMlEShrjrs1w5HspaX0R4WikcGf5u3o' (length=43)

我的数据是正确的,但是 contact_request['type'] 被转储为一个字符串,我认为这个问题应该是一个整数类型被验证为一个整数。

有人可以告诉我我做错了什么吗?

我没有自定义约束验证器。

谢谢 !

雅各布·马查克

@Column关联字段不应有任何注释。Doctrine 将根据ContactCategory主键的类型确定它应该是什么类型的列

去掉

 * @ORM\Column(name="type", type="integer")

ContactRequest::$type

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony使用表单验证实体

来自分类Dev

Symfony 不验证实体

来自分类Dev

Symfony 2.8表单实体类型自定义属性

来自分类Dev

symfony 学说验证实体关系错误

来自分类Dev

Symfony 2.7表单实体类型在表单中呈现多个属性

来自分类Dev

当表单具有实体类型时,Symfony3多对多现实

来自分类Dev

约束验证器在Symfony 2中的实体就绪之前验证实体

来自分类Dev

Symfony3.0使用实体类型下拉菜单保存表单时;SQL错误无法插入null

来自分类Dev

Symfony3.0保存带有“实体类型”下拉列表的表单时;SQL错误无法插入null

来自分类Dev

Symfony 2.3:验证不带表单的实体

来自分类Dev

Symfony从表单类型的实体中创建选择

来自分类Dev

Symfony-在INSERT,UPDATE或DELETE中以不同方式验证实体

来自分类Dev

当使用表单实体类型进行编辑时,Symfony“spl_object_hash() 期望参数 1 为对象,给出字符串”

来自分类Dev

symfony原则将实体对象移至另一种实体类型

来自分类Dev

Symfony将许多实体类型OneToMany绑定到一个实体

来自分类Dev

Symfony 表单类型添加表单类型验证不起作用

来自分类Dev

Symfony更新表单实体

来自分类Dev

使用数组和实体验证Symfony 2表单

来自分类Dev

Symfony2,YML文件,实体和表单中的验证

来自分类Dev

为Symfony2中的实体类型设置默认值

来自分类Dev

如何在Symfony2中更改实体类型的ID?

来自分类Dev

Symfony 实体类型参考在保存时包含字符串而不是整数

来自分类Dev

Symfony 2表单验证

来自分类Dev

实体表单类型上的Symfony 2 Transformer

来自分类Dev

Symfony2表单类型实体添加额外选项

来自分类Dev

symfony实体表单类型以及相关数据

来自分类Dev

Symfony表单类型实体数据转换器

来自分类Dev

具有类型和不同选项的通用实体的 Symfony 表单

来自分类Dev

Symfony表单验证基本表单

Related 相关文章

  1. 1

    Symfony使用表单验证实体

  2. 2

    Symfony 不验证实体

  3. 3

    Symfony 2.8表单实体类型自定义属性

  4. 4

    symfony 学说验证实体关系错误

  5. 5

    Symfony 2.7表单实体类型在表单中呈现多个属性

  6. 6

    当表单具有实体类型时,Symfony3多对多现实

  7. 7

    约束验证器在Symfony 2中的实体就绪之前验证实体

  8. 8

    Symfony3.0使用实体类型下拉菜单保存表单时;SQL错误无法插入null

  9. 9

    Symfony3.0保存带有“实体类型”下拉列表的表单时;SQL错误无法插入null

  10. 10

    Symfony 2.3:验证不带表单的实体

  11. 11

    Symfony从表单类型的实体中创建选择

  12. 12

    Symfony-在INSERT,UPDATE或DELETE中以不同方式验证实体

  13. 13

    当使用表单实体类型进行编辑时,Symfony“spl_object_hash() 期望参数 1 为对象,给出字符串”

  14. 14

    symfony原则将实体对象移至另一种实体类型

  15. 15

    Symfony将许多实体类型OneToMany绑定到一个实体

  16. 16

    Symfony 表单类型添加表单类型验证不起作用

  17. 17

    Symfony更新表单实体

  18. 18

    使用数组和实体验证Symfony 2表单

  19. 19

    Symfony2,YML文件,实体和表单中的验证

  20. 20

    为Symfony2中的实体类型设置默认值

  21. 21

    如何在Symfony2中更改实体类型的ID?

  22. 22

    Symfony 实体类型参考在保存时包含字符串而不是整数

  23. 23

    Symfony 2表单验证

  24. 24

    实体表单类型上的Symfony 2 Transformer

  25. 25

    Symfony2表单类型实体添加额外选项

  26. 26

    symfony实体表单类型以及相关数据

  27. 27

    Symfony表单类型实体数据转换器

  28. 28

    具有类型和不同选项的通用实体的 Symfony 表单

  29. 29

    Symfony表单验证基本表单

热门标签

归档