Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • Yardım
  • Laravel8 Destroy Kullanımı

Laravel 8 de CRUD işlemleri için tek route var. Burada destroy işlemini baktığımda birkaç yerde form olarak gönderdiklerini gördüm. Bu kullanım doğru olan mı normalde düzenleme gibi link üzerinden gönderiyordu önceden. Şimdi listede her butonu bir form içine almak gerekiyor. Bu şekilde kullanım doğru olan mı yoksa farklı bir fikriniz var mı
`
<tr>
<td>{{ $product->id }}</td>
<td>{{ $product->name }}</td>
<td>{{ $product->price }}</td>
<td>{{ $product->detail }}</td>
<td>
<form action="{{ route('products.destroy',$product->id) }}" method="POST">

                    <a class="btn btn-info" href="{{ route('products.show',$product->id) }}">Show</a>

                    <a class="btn btn-primary" href="{{ route('products.edit',$product->id) }}">Edit</a>

                    @csrf
                    @method('DELETE')

                    <button type="submit" class="btn btn-danger">Delete</button>
                </form>
            </td>
        </tr>

`

  • furkay16 RESTful olduğu için Products@destroy yöntemine DELETE ile istek atmanız lazım. Javascript kullanmıyorsanız form etiketi kullanacaksınız. Yani kullanımınız doğru, sadece sayfada 1-2 form görmeye alışık olduğunuz için size garip geliyor.

Yazınızı doğru anladıysam eğer kullanımınız doğru.

Ancak şu şekilde de yapabilirsiniz.

İlk olarak delete adında bir fonksiyon oluşturursunuz.

    public function delete($table, $id){
        DB::table($table)->where('id', $id)->delete();
        return redirect()->back()->with('success', 'Veri başarıyla silindi!');
    }

Daha sonra bir route tanımlaması yaparsınız.

Route::get('delete/{table}/{id}', [App\Http\Controllers\Backend\HomeController::class, 'delete'])->name('delete');

table'a tablo, id'ye verinin id'si gelir.

Bu işlemden sonra form ile post etmeden silebilirsiniz.

Şöyle anlatayım
Route::resource('products', Products::class); burada tüm crud işlemlerini yapıyor. fakat silme işleminde sadece sil butonunu bir form içine alıp
`<form action=“{{ route(‘products.destroy’,$product->id) }}” method=“POST”>
@csrf
@method('DELETE')

                <button type="submit" class="btn btn-danger">Delete</button>

</form>
`
bu şekilde kullanılmış.
Ben normalde sizin yazdığınız gibi kullanıyordum fakat burada belirtilen tek route işlemi ile hepsi yapılabiliyor. ama delete işlemi böyle form olması gerekiyormuş. Bundan emin olamadım bu şekilde mi kullansam.

    furkay16 RESTful olduğu için Products@destroy yöntemine DELETE ile istek atmanız lazım. Javascript kullanmıyorsanız form etiketi kullanacaksınız. Yani kullanımınız doğru, sadece sayfada 1-2 form görmeye alışık olduğunuz için size garip geliyor.