Laravel Resource Controller Nedir?

Laravel Resource Controller Nedir?

Laravel'de Resource Controller, CRUD (Create, Read, Update, Delete) işlemlerini hızlı ve düzenli bir şekilde gerçekleştirmek için kullanılan bir yapıdır. Resource Controller'lar, veritabanındaki kayıtların yönetimi için gerekli olan tüm temel işlemleri sağlar. Laravel, php artisan make:controller komutuyla kolayca Resource Controller oluşturmayı destekler.

1. Resource Controller Oluşturma

Resource Controller oluşturmak için aşağıdaki komutu kullanabilirsiniz:

php artisan make:controller ProductController --resource

 

Bu komut, ProductController adında bir Resource Controller oluşturur ve CRUD işlemlerini gerçekleştirebileceğiniz yedi temel metot içerir: index, create, store, show, edit, update, destroy.

3. Resource Controller Yönlendirme (Routing)

Resource Controller'ı yönlendirmek için web.php dosyasına aşağıdaki kodu ekleyin:

Route::resource('products', ProductController::class);

 

Bu yönlendirme, tüm CRUD işlemleri için gerekli olan rotaları otomatik olarak tanımlar:

  • GET /productsindex (Listeleme)
  • GET /products/createcreate (Yeni Kayıt Formu)
  • POST /productsstore (Yeni Kayıt Ekleme)
  • GET /products/{id}show (Belirli Kaydı Gösterme)
  • GET /products/{id}/editedit (Düzenleme Formu)
  • PUT/PATCH /products/{id}update (Güncelleme)
  • DELETE /products/{id}destroy (Silme)

4. CRUD İşlemlerini Gerçekleştirme

a. Listeleme (Index Metodu)

index metodunda tüm ürünleri listeleyebilirsiniz:

public function index()
{
    $products = Product::all();
    return view('products.index', compact('products'));
}

 

Bu örnek, tüm ürünleri products.index görünümüne gönderir.

b. Yeni Kayıt Ekleme (Create ve Store Metotları)

create metodu, yeni kayıt formunu görüntülerken, store metodu veritabanına yeni kayıt ekler:

public function create()
{
    return view('products.create');
}

public function store(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'price' => 'required|numeric',
    ]);

    Product::create($validated);
    return redirect()->route('products.index')->with('success', 'Ürün başarıyla eklendi.');
}

 

c. Güncelleme (Edit ve Update Metotları)

edit metodu, düzenleme formunu gösterirken, update metodu veritabanındaki kaydı günceller:

public function edit(Product $product)
{
    return view('products.edit', compact('product'));
}

public function update(Request $request, Product $product)
{
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'price' => 'required|numeric',
    ]);

    $product->update($validated);
    return redirect()->route('products.index')->with('success', 'Ürün başarıyla güncellendi.');
}

 

d. Silme (Destroy Metodu)

destroy metodu, belirli bir kaydı veritabanından siler:

public function destroy(Product $product)
{
    $product->delete();
    return redirect()->route('products.index')->with('success', 'Ürün başarıyla silindi.');
}

 

5. Resource Controller İçin En İyi Uygulamalar

  • Doğrulama (Validation): Kayıt eklerken veya güncellerken her zaman doğrulama yapın.
  • Veri Dönüşümü: Sadece ihtiyaç duyulan verileri döndürmek için Resource sınıflarını kullanın.
  • Yetkilendirme: Kaynaklara erişimi kontrol etmek için authorize ve middleware kullanın.
  • Görünümler (Views): CRUD işlemlerini ayrı dosyalarla organize edin (index.blade.php, create.blade.php vb.).