在我的实体中,我有以下属性:
/**
* @var string
*
* @ORM\Column(name="programm", type="string", length=255, nullable=true)
* @Assert\File(
* maxSize = "1M",
* mimeTypes = {"application/pdf", "application/x-pdf", "image/png", "image/jpg", "image/jpeg"},
* mimeTypesMessage = "Es sind nur pdf, jpg und png Dateien erlaubt",
* groups={"new"}
* )
*/
private $programm;
和回调
/**
* @Assert\Callback
*/
public function validateFields(ExecutionContextInterface $context) {
if ('' == $this->programm && 2 == $this->programmextern) {
$context->buildViolation('Bitte Datei hochladen')->atPath('programm')->addViolation();
}
如果Assert \ File出错(文件太大,文件没有正确的mimeType等)我想跳过回调。有没有办法在我的实体中访问Assert \ File产生的错误,所以只有在没有错误的情况下我才能触发回调?
如果没有,有没有办法过滤错误,这样,如果有多个错误,只有在枝条模板中显示AssertFile错误?
答案 0 :(得分:0)
然后,最简单的选项是实现您想要的是为回调添加不同的验证组:
/**
* @Assert\Callback(
* groups={"trigger_after_new"}
* )
*/
public function validateFields(ExecutionContextInterface $context) {
if ('' == $this->programm && 2 == $this->programmextern) {
$context->buildViolation('Bitte Datei hochladen')->atPath('programm')->addViolation();
}
然后读取How to Sequentially Apply Validation Groups仅在先前验证器组成功通过时才触发回调。