<form action="{{ route('admin.product.storeImagenes', $product) }}" method="POST" class="dropzone"id="my-awesome-dropzone">
Y desde el controller o componente Livewire al que apunte esa ruta:
use Illuminate\Support\Facades\Storage;
...
public function storeImagenes(Product $product, Request $request) {
$request->validate([
'fichero' => 'required|image|max:2048'
]);
$url = Storage::put('products', $request->file('fichero'));
$product->images()->create([
'url' => $url
]);
}
Storage::put lo almacena en donde lo tengas configurado enconfig\filesystems.php:
'default' => env('FILESYSTEM_DRIVER', 'public'),
Por ejemplo en este caso lo almacenaría físicamente dentro de la carpeta: C:\xampp\htdocs\miproyecto\public\storage\products
Para el caso de borrar desde la view:
deleteImagen({{ $image->id }})
Y desde el método del controller o del componente livewire:
public function deleteImagen(Image $image) {
Storage::delete([$image->url]); // eliminarla físicamente
$image->delete(); // borrar de la BD
$this->product = $this->product->fresh();
}
EJEMPLO GENERAL DEL DROPZONE:
Dropzone.options.myAwesomeDropzone = {
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
paramName: "fichero",
dictDefaultMessage: "Arrastra aquí las imágenes que quieras subir",
acceptedFiles: "image/*",
maxFilesize: 2, // MB
maxFiles: 4,
complete: function(fichero) {
this.removeFile(fichero);
},
queuecomplete: function() { // se ejecuta cuando se hayan subido todos los q estén en la cola
Livewire.emit('refreshProduct');
},
accept: function(file, done) {
if (file.name == "xxxx") {
done("xxxx");
}
else { done(); }
}
};
No hay comentarios:
Publicar un comentario