我正在使用 symfony2.3 和管理生成器包。我有一个带有文件字段的实体。我想根据需要标记该字段。我尝试了几种方法,但没有按预期工作。
这是我在实体中的文件字段:
/**
* @Assert\NotNull()
* @Assert\Image(
* maxSize="50k",
* maxSizeMessage = "El tamaño maximo de la imagen es de {{ limit }}kb",
* minWidth = 237,
* maxWidth = 237,
* minHeight = 170,
* maxHeight = 170,
* minWidthMessage = "La imagen debe tener {{ min_width }}px de ancho.",
* minHeightMessage = "La imagen debe tener {{ min_height }}px de alto.",
* maxWidthMessage = "La imagen debe tener {{ max_width }}px de ancho.",
* maxHeightMessage = "La imagen debe tener {{ max_height }}px de alto."
* )
* @Vich\UploadableField(mapping="product_mapping", fileNameProperty="fileName")
*
* @var File $file
*/
protected $file;
/**
* @var string $fileName
*
* @ORM\Column(name="fileName", type="string", length=255, nullable = false)
*/
protected $fileName;
注意 @Assert\NotNull() 和 nullable = false。
使用此配置,我可以验证新实体的创建(如果我让文件字段为空,则管理员生成器捆绑显示一条消息:该字段不能为空...),但是当我编辑时(更新) 创建的实体,引发对 NotNull 的验证(使用先前使用有效文件创建的实体)。我不得不再次上传一个文件才能更新实体。
这是管理员生成器的配置 (entity-generator.yml)
file:
label: Imagen
formType: single_upload
dbType: string
addFormOptions:
#required: true ## this launch a exception
previewFilter: 150x150_outbound_thumnail
help: "La imagen del producto debe tener 237px de ancho y 170px de alto, y no debe exceder los 50kb."
提前致谢