Eğitim Serisi 29 Jan 2026 4 dk

Laravel Form İşlemleri: Veri Ekleme ve CSRF Koruması (Gün 8)

Author
CyberDirtyCat
Full Stack Developer
Laravel Form İşlemleri: Veri Ekleme ve CSRF Koruması (Gün 8)

Kapıları Açmak

Merhaba dostlar! Ben Uğurcan. LaraFreelancer serimizin 8. günündeyiz.

Dün verileri listeledik. Bugün ise o listenin başındaki "+ Yeni Müşteri" butonuna can vereceğiz. Kullanıcıdan veriyi alacağız, güvenlik kontrolünden (CSRF) geçireceğiz ve veritabanına yazacağız.

Hazırsanız formları doldurmaya başlayalım!

Adım 1: Rotaları Tanımlamak (Git ve Gel)

Veri ekleme işleminde iki aşama vardır:

  1. GET: Form sayfasını göstermek.
  2. POST: Formdan gelen veriyi alıp kaydetmek.

routes/web.php dosyasını açın ve ClientController altına şu rotaları ekleyin:

// Formu Gösterme Rotası (Sayfayı açar)
Route::get('/musteriler/olustur', [ClientController::class, 'create'])->name('clients.create');

// Kaydetme Rotası (Veriyi işler)
Route::post('/musteriler/kaydet', [ClientController::class, 'store'])->name('clients.store');

Adım 2: Controller Metotları

app/Http/Controllers/ClientController.php dosyasını açın. İki yeni fonksiyon ekleyeceğiz: create ve store.

// 1. Form Sayfasını Gösterir
public function create()
{
    return view('clients.create');
}

// 2. Formdan Gelen Veriyi Kaydeder
public function store(Request $request)
{
    // Formdan gelen tüm verileri al ve veritabanına yaz
    // Not: Model dosyasında $fillable tanımlı olduğu için güvenlidir.
    Client::create($request->all());

    // İşlem bitince listeye geri gönder
    return redirect()->route('clients.index');
}

Adım 3: Form Tasarımı ve CSRF (Çok Önemli!)

Şimdi resources/views/clients klasörü içine create.blade.php adında yeni bir dosya oluşturun.

Aşağıdaki kodda @csrf komutuna dikkat edin. Bu komut, Laravel'in "Bu veri gerçekten benim sitemden mi geliyor?" kontrolü yapmasını sağlar. Bunu yazmazsanız 419 Page Expired hatası alırsınız.

@extends('layouts.admin')

@section('title', 'Yeni Müşteri Ekle')

@section('content')
<div class="container">
    <div class="card shadow">
        <div class="card-header bg-primary text-white">
            <h4 class="mb-0">Yeni Müşteri Oluştur</h4>
        </div>
        <div class="card-body">
            
            <form action="{{ route('clients.store') }}" method="POST">
                @csrf <div class="mb-3">
                    <label>Müşteri Adı / Firma Adı</label>
                    <input type="text" name="name" class="form-control" placeholder="Örn: Acme A.Ş." required>
                </div>

                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label>E-Posta Adresi</label>
                        <input type="email" name="email" class="form-control" placeholder="info@acme.com" required>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label>Telefon</label>
                        <input type="text" name="phone" class="form-control" placeholder="0555...">
                    </div>
                </div>

                <div class="mb-3">
                    <label>Bütçe (₺)</label>
                    <input type="number" name="budget" class="form-control" step="0.01">
                </div>

                <button type="submit" class="btn btn-success w-100">💾 Kaydet</button>
            </form>
            </div>
    </div>
</div>
@endsection

Adım 4: Butonu Bağlamak

Son olarak, dünkü clients/index.blade.php sayfasındaki "+ Yeni Müşteri" butonunun href="#" kısmını güncelleyelim:

<a href="{{ route('clients.create') }}" class="btn btn-primary">+ Yeni Müşteri</a>

Artık butona basınca form açılacak, formu doldurup "Kaydet" deyince listeye geri dönecek ve en üstte yeni müşterinizi göreceksiniz!

VS Code İpucu 💡

HTML form elemanları yazarken input:text.form-control yazıp Tab tuşuna basarsanız, VS Code sizin için <input type="text" class="form-control"> kodunu tamamlar. Hız hayat kurtarır!

Adım 5: Save Point (Git Commit)

Veri giriş kapısını yaptık.

git add .
git commit -m "Gün 8: Müşteri ekleme formu ve kaydetme işlemi yapıldı"
git push

🎯 GÜNÜN GÖREVİ (Challenge)

Sıra sende kral!

  1. ProjectController içinde create ve store metotlarını yaz.
  2. projects/create.blade.php dosyasını oluştur.
  3. Proje formunda şu alanlar olsun:
    • Proje Adı (Input Text)
    • Açıklama (Textarea)
    • Durum (Select Box: Bekliyor, Devam Ediyor, Bitti)
  4. Formu doldurup kaydettiğinde Proje Listesine yönlensin.
  5. Kanıt: Eklediğin projenin listede göründüğü ekran görüntüsünü veya kodlarını paylaş!


Bu Teknolojiyle Projenizi Uçuralım

Yazıda bahsettiğim yöntemleri projenize entegre etmek ister misiniz? Profesyonel destek alın.

Teklif Al
#Web Geliştirme #Web Yazılım #Laravel Form #Veri Kaydetme #CSRF Token #Bootstrap Form #Backend Dersleri

Yorumlar (0)

Düşüncelerini Paylaş

Henüz yorum yapılmamış.