Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel Form Requests: Kontrolcülerinizi Doğrulama ile Karmaşıklaştırmaktan Kaçının
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel Form Requests: Kontrolcülerinizi Doğrulama ile Karmaşıklaştırmaktan Kaçının

Yazılım

Laravel Form Requests: Kontrolcülerinizi Doğrulama ile Karmaşıklaştırmaktan Kaçının

teknomers
Son güncelleme: 17 Şubat 2026 18:01
teknomers
Paylaş
Paylaş

Validation, kod tabanını yavaş yavaş mahvedebilecek “küçük” şeylerden biridir. Başlangıçta, controller’larınızın içinde birkaç request()->validate() çağrısı vardır; ama daha fazla alan ve endpoint ekledikçe, karşınıza tekrarlanan validation dizileri ve koşullar ile dolu controller’lar çıkar.

Laravel Form Requests, validation ve yetkilendirmeyi özel sınıflara taşıyarak bu sorunu çözer.

Başlangıçta birkaç request()->validate() çağrısı vardır. Sonrasında daha fazla alan, daha fazla endpoint, daha fazla kural ekledikçe aniden:

  • tekrarlanan validation dizileri,
  • koşullerle dolu controller’lar,
  • tutarsız hata mesajları,
  • ve “bunu yapmaya kim yetkili?” kontrollerinin validation mantığı ile karışması oluşur.


Felsefe: Controller’lar Orkestre Eder, Form Requests Doğrular

Bir Form Request, şunları merkezileştirir:

  • rules(): Validation mantığınız.
  • authorize(): Eylemi gerçekleştirme yetkisi olanlar.
  • messages(): Özel hata mesajları.
  • prepareForValidation(): Kurallar uygulanmadan önce verileri normalleştirme.

Kısacası:

Controller’lar orkestre eder. Form Requests doğrular (ve yetkilendirebilir).



Neden Form Requests Kullanmalıyız?


1) Controller’ları Temiz Tutun

Controller’lar, ne yapılması gerektiğine odaklanır, nasıl doğrulanacağına değil.


2) Kuralları Güvenli Bir Şekilde Yeniden Kullanın

Bir StorePostRequest ve UpdatePostRequest, kural paylaşımı ya da genişletmesi yapabilir, kopyala/yapıştır gerektirmeden.


3) Eylemler için Yetkilendirmeyi Merkezileştirin

authorize(), Politikalarla harika bir şekilde eşleşebilir:

  • Politika kaynak izinlerini belirler.
  • Form Request eylem izinlerini belirler (örn. “oluşturabilir mi?”)


4) Daha Kolay Test

Form Requests, validation ve uç durumları test etmeyi basit hale getirir.



Bir Form Request Oluşturma

php artisan make:request StoreProjectRequest
        

Bir şey alacaksınız:

// app/Http/Requests/StoreProjectRequest.php
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreProjectRequest extends FormRequest
{
    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [];
    }
}
        


Temel Örnek: Bir Projeyi Kaydet


Form Request

// app/Http/Requests/StoreProjectRequest.php
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

class StoreProjectRequest extends FormRequest
{
    public function authorize(): bool
    {
        // Seçenek A: basit tut
        return auth()->check();

        // Seçenek B: Bir Politikaya devretmek (birçok uygulamada önerilir)
        // return $this->user()->can('create', Project::class);
    }

    public function rules(): array
    {
        return [
            'name'        => ['required', 'string', 'min:3', 'max:120'],
            'description' => ['nullable', 'string', 'max:2000'],
            'status'      => ['required', Rule::in([, ])],
            'starts_at'   => [, ],
        ];
    }
}
        


Controller Küçük Kalır

// app/Http/Controllers/ProjectController.php
use App\Http\Requests\StoreProjectRequest;

class ProjectController
{
    public function store(StoreProjectRequest $request)
    {
        $data = $request->validated();

        // ... yaratım mantığı (model/hizmet/kullanım durumu)
        // Project::create([...$data, 'user_id' => $request->user()->id]);

        return redirect()->back()->with(, );
    }
}
        

Burada dikkat çekici olan:

  • validation controller içinde değil
  • $request->validated() sadece geçerli alanların geçmesini garanti eder


Hata Mesajlarını Geliştirme (isteğe bağlı)

public function messages(): array
{
    return [
        => ,
        => ,
    ];
}

public function attributes(): array
{
    return [
        => ,
    ];
}
        


prepareForValidation() ile Girişi Normalleştirme

Kurallar uygulanmadan önce verileri temizlemek için çok faydalıdır.

protected function prepareForValidation(): void
{
    ->merge([
        => (() ->input()),
    ]);
}
        

Yaygın kullanım durumları:

  • string’leri trimleme,
  • “on” değerini boolean’a çevirme,
  • eski anahtarları eşleştirme,
  • eksik değerleri varsayılan hale getirme.


Gelişmiş Desen: Store/Update için Paylaşılan Kurallar

Güncellemeleriniz genellikle hafifçe farklı kurallara sahiptir (örn. benzersizlik kısıtlamaları).

// app/Http/Requests/UpdateProjectRequest.php
use Illuminate\Validation\Rule;

public function rules(): array
{
    = ->route()?->;

    return [
        => [
            , , ,
            Rule::(, )->(),
        ],
        => [, ::([, , ])],
    ];
}
        


Form Requests Politikalar ile Nasıl Uyum Sağlar

Temiz bir yapı:

  • Politika → kaynak düzeyinde izinler (“bu projeyi güncelleyebilir mi?”)
  • Form Request → veri doğrulaması (+ isteğe bağlı eylem düzeyi kontrolü)

Örnek:

  • Controller $this->authorize('update', $project) çağrısı yapar (Politika)
  • Form Request alanları doğrular ve girişi şekillendirir

Bu ayrım, yetkilendirme mantığınızı belirgin ve yeniden kullanılabilir hale getirir.



Doğrulamayı Hızla Test Etme

Birkaç test bile regresyonları önleyebilir.

public function test_project_name_is_required(): void
{
    = ->(, [
        => ,
        => ,
    ]);

    ->([]);
}
        


Kopyala/Yapıştır Kontrol Listesi

  • [ ] Her eylem için bir Form Request oluşturun (StoreXRequest, UpdateXRequest)
  • [ ] Controller’ları ince tutun: $request->validated()
  • [ ] Gerekirse prepareForValidation() ile girişi normalleştirin
  • [ ] Politikalari kaynak izinleri için kullanın; isteğe bağlı olarak authorize() içinde çağırın
  • [ ] Kritik validasyon kuralları için 3-5 test ekleyin


Kapanış

Laravel Form Requests, bir projeyi büyüdükçe temiz tutmamıza yardımcı olan basit bir alışkanlıktır:

  • controller’lar okunabilir kalır,
  • validation kuralları tutarlı kalır,
  • yetkilendirme daha net hale gelebilir,
  • ve yeniden düzenlemeler daha güvenli hale gelir.

Kaynak: Orijinal Makale

Contents
  • Felsefe: Controller’lar Orkestre Eder, Form Requests Doğrular
  • Neden Form Requests Kullanmalıyız?
    • 1) Controller’ları Temiz Tutun
    • 2) Kuralları Güvenli Bir Şekilde Yeniden Kullanın
    • 3) Eylemler için Yetkilendirmeyi Merkezileştirin
    • 4) Daha Kolay Test
  • Bir Form Request Oluşturma
  • Temel Örnek: Bir Projeyi Kaydet
    • Form Request
    • Controller Küçük Kalır
  • Hata Mesajlarını Geliştirme (isteğe bağlı)
  • prepareForValidation() ile Girişi Normalleştirme
  • Gelişmiş Desen: Store/Update için Paylaşılan Kurallar
  • Form Requests Politikalar ile Nasıl Uyum Sağlar
  • Doğrulamayı Hızla Test Etme
  • Kopyala/Yapıştır Kontrol Listesi
  • Kapanış
Vaultic: Laravel için WebAuthn Kimlik Doğrulaması – Şifrelerin Sonu
İnce Sarıcı AI Uygulamaları Neden Artık Geçerli Değil (Ve SaaS’ı Gerçekten Nasıl Tasarlamalıyız)
Laravel Koleksiyonları: İş Mantığı İçin Neden Kullanıyorum (Sadece Kolaylık Değil)
Laravel/Statamic paket geliştirme için Docker ortamı
Yüksek Hacimli Laravel Uygulamaları için Redis Tabanlı İzinler: v4.0.0-beta.1
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Paramount’a Teklifini Sunması İçin Bir Hafta Süre Verildi
Sonraki Makale 2026’da 100 Milyon Dolar ve Üstü Yatırım Alan 17 ABD AI Şirketi

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Acil! Sessiz Fidye Grubu Hukuk Firmalarını Hedef Alıyor
Siber Güvenlik
Görkemli Bir Yaratım: Japon Gotik Korku Masalı
Liste
Anycubic Photon Mono 4, 190$ altına düştü; 50$ tasarruf et!
Donanım
Yeni Assassin’s Creed Black Flag ile Edward Kenway’ı Yeniden Keşfedin
Oyun
Saldırılar, İfşa ve Fidye: 2026’nın En Kötü Veri İhlalleri
Genel
Sanal İşletim Sistemi Müzesi ile 600’den Fazla OS Deneyimleyin
Liste
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?