Я использую модуль SilverStripe Dropzone для загрузки изображений в интерфейсной форме. Это поле:
$fields->push(FileAttachmentField::create('ProfileImageID', 'Upload Profile Photo')
->setFolderName('Foo')
->setValue(null, $this)
->imagesOnly()
->setPermissions([
'delete' => true
])
);
Отношение есть. Я также установил разрешение на удаление.
public function canDelete($member = null)
{
return Permission::check('ADMIN') || $member->ContactID === $this->ID;
}
Сначала это выглядит, как если бы я мог удалить его, но если я обновляю страницу, изображение появляется снова. Я понятия не имею, что мне не хватает. Какие-нибудь советы?
Я выяснил, в чем проблема. У меня есть ProfileImage как обязательное поле, поэтому я не могу сохранить его, если его нет. Таким образом, Dropzone не удаляет файл. Насколько я понял Dropzone вы должны сохранить, чтобы фактически удалить. Я использую ZenValidator для проверки. Я не уверен, но я надеюсь, что это может помочь кому-то еще. Если я ошибаюсь, поправьте меня.
Других решений пока нет …