Saya mencoba untuk mendapatkan produk (id) yang dipilih dari tampilan ke pengontrol tetapi hanya menampilkan produk (id) pertama. Jadi saya memiliki lingkaran produk yang menunjukkan gambar setiap produk yang saya inginkan adalah ketika pengguna memilih gambar apa pun, ia harus mengirim id sesuai dengan produk yang dipilih. Sejauh ini hanya memilih id produk pertama bahkan jika saya mengklik produk terakhir (gambar) atau gambar yang berbeda itu hanya mengirim id produk pertama. Bagaimana saya bisa memperbaiki ini?

Pedang

  @foreach($products as $product)
    @if(count($product->ProductsPhoto))
    <a  href="javascript:;" class="view-product" >
    <img src="{{Storage::url($product->ProductsPhoto[0]->filename)}}" alt=""  >
      </a>
   @else
        @endif
    @endforeach

Javascript

<?php  $id = $product->id; ?>
<script>
  $('.view-product').on("click", function(event) {
  $("#view-product").modal('show');
  $.ajax({
    url: '{{route('view.producT', $id)}}',
    type: 'GET',
    dataType: 'json',
  }).done(function(response) {
    console.log('received this response: '+response);
  });
});

</script>

Rute

Route::get('view-product/{id}', 'HomeController@viewProduct')->name('view.producT');

Pengontrol

public function viewProduct($id)
{
  dd($id);
}
0
user11710915 7 Juli 2020, 04:17

1 menjawab

Jawaban Terbaik

Tentu saja Anda tidak mengirimkan id pada setiap produk

Anda dikirimi id dengan menggunakan <?php $id = $product->id; ?> dan $product berasal dari @foreach($products as $product) @endoferach

Namun $id akan mengembalikan id yang sama

Anda dapat mengirim product id di html dan mendapatkannya dari javascript

@foreach($products as $product)
    @if(count($product->ProductsPhoto))
        <a class="view-product" id="{{$product->id}}">
            <img src="{{Storage::url($product->ProductsPhoto[0]->filename)}}" alt=""  >
        </a>
   @endif
@endforeach

Begitulah a href Anda dengan menambahkan id="{{$product->id}}"

<script>
    $('.view-product').on("click", function(event) {
        var product_id = $(this).attr("id"); //this how you get the product_id
        var url = '{{route('view.producT',[":product_id"])}}'; // you cant combine js value on laravel route
        //then you need to replace it using below way
        url = url.replace(':product_id', product_id);
        $("#view-product").modal('show');
        $.ajax({
            url: url,
            type: 'GET',
            dataType: 'json',
        }).done(function(response) {
            console.log('received this response: '+response);
        });
    });

</script>
1
Kelvin 7 Juli 2020, 01:40