Saya mencoba menghapus catatan dari tabel produk saya, setiap produk memiliki gambar. Saya tidak tahu cara menghapus gambar dari file tempat penyimpanannya.

Product.js

$(document).ready(function() {    

    $("#btn-delete").click(function() {
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            type: 'DELETE',
            url: '/product/' + $("#frmDeleteProduct input[name=product_id]").val(),
            dataType: 'json',
            success: function(data) {
                $("#frmDeleteProduct .close").click();
                window.location.reload();
            },
            error: function(data) {
                console.log(data);
            }
        });
    });
});

function deleteProductForm(product_id) {
    $.ajax({
        type: 'GET',
        url: '/product/' + product_id,
        success: function(data) {
            $("#frmDeleteProduct #delete-title").html("¿Do you want to delete this product (" + data.products.name + ")?");
            $("#frmDeleteProduct input[name=product_id]").val(data.products.id);
            $('#deleteProductModal').modal('show');
        },
        error: function(data) {
            console.log(data);
        }
    });
}

ProductController.php

Saya membaca bahwa saya perlu meletakkan sesuatu seperti ini di pengontrol saya File::delete('img/products/' . $image); tetapi sekarang saya tidak tahu caranya.

public function destroy($id)
    {

        //File::delete('img/products/' . $image); 
        $products = Product::destroy($id);

        return response()->json([
            'error' => false,
            'products'  => $products,
        ], 200);
    }
1
Daniel T. 23 Oktober 2019, 22:59

1 menjawab

Jawaban Terbaik

Anda harus meneruskan sebagai parameter ke File::delete() jalur lengkap saat gambar Anda disimpan. Misalnya, jika gambar Anda berada di jalur penyimpanan laravel di subdirektori img/products/, dan nama gambar adalah id produk dengan ekstensi .jpg, Anda dapat melakukan ini:

public function destroy($id)
{
    $fullImgPath = storage_path("img/products/$id.jpg");
    if(File::exists($fullImgPath)) {
        File::delete($fullImgPath);
    }

    $products = Product::destroy($id);

    return response()->json([
        'error' => false,
        'products'  => $products,
    ], 200);
}

Tetapi jika Anda memiliki nama gambar dalam model Product Anda, Anda dapat melakukan ini:

public function destroy($id)
{
    $product = Product::find($id);

    $fullImgPath = storage_path("img/products/".$product->image_name);
    if(File::exists($fullImgPath)) {
        File::delete($fullImgPath);
    }

    $product->delete();

    return response()->json([
        'error' => false,
        'products'  => $product->id,
    ], 200);
}
0
Jean Marcos 23 Oktober 2019, 20:34