如果使用clearMissing false提交,则不对Symfony表单执行验证

时间:2015-11-12 16:20:42

标签: forms rest symfony fosrestbundle

我正在使用Symfony构建REST API。让我们说我有以下Doctrine实体:

class Car {
    private $model;
    private $make = 'Mercedes';
    /** @Assert\NotBlank() **/
    private $year;
}

当我尝试使用HTTP POST请求(REST,没有浏览器)创建新的Car时,如果请求不包含$make属性的任何值,则默认情况下Form::submit()方法使我的实体中的此字段无效。由于我不希望它这样做,我将其clearMissing参数设置为false。此工作正常,但现在我的@Assert约束未被考虑(与clearmissing true时相反)。例如$year属性如果null没有触发任何错误,看起来好像没有执行验证

所以我想知道是否有办法:

  • 在我的实体上使用默认值的属性
  • 加上缺少数据的字段无效
  • 加上@Asserts约束受到尊重

注意:

我发现了一个两岁的issue on Github,它完全描述了我的问题,但问题应该得到解决。所以它不应该和我一样......

1 个答案:

答案 0 :(得分:1)

根据http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html

  1. 如果您想使用默认值,可以使用下一个:
  2. 1)对于YAML:

    field:
        options:
            default: "your_value_here"
    

    2)对于注释,只需添加到@ORM \ Column next:

    options={default:"you_value_here"}
    
    1. 设置为nullable只需添加nullable:true选项:
    2. 1)YAML

      field:
          nullable: true
      

      2)注释

      @ORM\Column(...., nullable=true)