TLDR; Check für Zieldateien Berechtigungen nach dem Hochladen, versucht auch zu dump($this->url)
vor dem Löschen, den richtigen Pfad von Ihrer Festplatte, um sicherzustellen, verwendet wird
Beispiel:
Solange Sie Ihr Feld korrekt definiert haben, Rucksack sollte in der Lage sein, alles automatisch zu verwalten. Zum Beispiel den Umgang mit Client-Images, ich habe dies als das Feld:
$this->crud->addField([
'name' => 'logotipo',
'label' => "Logotipo del Cliente",
'type' => 'image',
'upload' => true,
'crop' => true,
'disk' => 'uploads',
], 'both');
Dann wird in dem Modell
public function setLogotipoAttribute($value)
{
if ($value==null) {
if(isset($this->attributes["logo"])) {
\Storage::disk($this->disk)->delete($this->attributes["logo]);
}
return null;
}
else
{
/* Whatever you need, I just create thumbs with a custom \Utils::thumb, you can mutate the atrribute to your needs */
$this->attributes["logo"] = \Utils::thumb($this, $value, "logo", "academias/logos", 300, 200, "png");
}
}
Und das ist alles, nimmt Rucksack kümmert sich um alles.
Die einzige Sache, die Sie berücksichtigen müssen, ist, wenn Sie das Modell löschen (Löschen eines Clients in meinem Beispiel), müssen Sie auch auf die Dateien achten, die Sie selbst löschen. Dies kann in der boot
Methode des Modells mit einem deleting
Ereignis geschehen.
public static function boot()
{
parent::boot();
static::deleting(function($obj) {
if (isset($obj->logo)) \Storage::disk($obj->disk)->delete($obj->logo);
});
}
Wie Sie es die $disk
und das Feld value
übergeben, wird die Datei ohne Probleme löschen, keine Notwendigkeit, den Weg zu geben, wie es in den
$value
enthalten sein wird, werden Sie die 'Verwendung - > delete() 'Funktion oder setzen Sie url manuell auf' null'? – QuezlerIch benutze löschen, um das Bild physisch loszuwerden –
Ich habe die gleiche Methode für eine andere Art von Dateien pdf und seltsam funktioniert das Löschen der Datei und die Einstellung Null auf der Datenbank. –