Laravel Form Request Kullanımı

Merhaba arkadaşlar,

bu yazımızda Laravel Form Request Kullanımına değinmeye çalışacağım. Laravel Form işlemleri bu istekler üzerinden gerçekleşmektedir.

Bir web projesi geliştirirken ya da Api gibi dışarıya açık uygulamalar yaparken sıklıkla kullandığımız form işlemleri projemizin daha dinamik ve kullanışlı bir hal almasına olanak sağlamaktadır.

Bu konuyu sizlere bir örnek üzerinden anlatmaya çalışacağım. Anlattığım örnek post metodu üzerinden olacaktır. Varsayalım bir kullanıcı kayıt formumuz olsun. Bide bu formdaki verilere ulaşmaya çalışalım. İlk olarak UserController adında Controller dosyamızı oluşturuyoruz.

Artisan komutu kullanarak controller dosyamızı oluşturmak için aşağıdaki kodu terminalimize yazmamız yeterli olacaktır.

php artisan make:controller UserController

Controller dosyamız oluşturktan sonra routes klasörü altında bulunan web.php dosyamızdan UserController içindeki register metoduna yönlendirecek rotamızı belirliyoruz.

web.php dosyamız:

<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;  
use App\Http\Controllers\UserController;
Route::get('/', [UserController::class, 'register']);
 

UserController.php Dosyamız

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
    public function register()
    { 
        return view('register');
    }
    public function kayit_ol(Request $request)
    {
       //form verilerini burada okuyacağız. Bu metod sürekli değişecek konu anlatımında
    }
}



view() metodu resources içerisindeki views klasöründeki blade dosyamıza yönlendirme yapıyor. Buna ilerleyen yazılarımda değineceğim şimdi sadece mantığını bilin yeterli.

views klasörü içerisindeki register.blade.php dosyamız:

  <div class="contaier mt-5">
        <form method="post" action="{{route('kayit_ol')}}">
            <div class="form-group">
                <label>Adınız Ve Soyadınız</label>
                <input type="text" class="form-control" name="ad_soyad">
              </div>   
              <div class="form-group">
                <label>Okulunuz</label>
                <input type="text" class="form-control" name="okul">
              </div>  
              <div class="form-group">
                <label>Yaşadığınız Şehir</label>
                <input type="text" class="form-control" name="sehir">
              </div>
            
            <button type="submit" class="btn btn-primary">Kayır Ol</button>
          </form>
    </div>

Şimdi form verilerini alma kısmına geçebiliriz.

Tüm Form Verilerini Alma

all() metodunu kullanarak formdan gelen verilerin hepsini dizi şeklinde alabiliriz. Yukardaki controllerda kayıt ol metodumuzu şu şekilde güncelliyoruz.

public function kayit_ol(Request $request)
    {
        $input = $request->all();
        print_r($input);
    }

Bu kodun çıktısı olarak forma girdiğimiz veriler bize dizi halinde gelecektir. Bu metod verinin form verisi mi yoksa apiden gelen veri mi olduğu farketmeksizin çalışmaktadır.

Tek bir Form Elemanının Değerini Alma

Tek bir inputun değerini almak için birden fazla yöntem kullanabiliriz.

 public function kayit_ol(Request $request)
    {
        $name = $request->input('ad_soyad');
        print_r($name);
    }

Eğer input boş gelmişse varsayılan değer olarak ikinci parametreyi kendimiz oluşturabiliriz.

public function kayit_ol(Request $request)
    {
        $name = $request->input('ad_soyad','Zafer Yıldız');
        print_r($name);
    }

Eğer formumuzdan dizi şeklinde bir input değeri geliyorsa onu işlemek için aşağıdaki yöntemleri kullanabiliriz.

$name = $request->input('products.0.name');
$names = $request->input('products.*.name');

Yukarıdaki kod parçacığında ilk satır sadece 1 değere ulaşırkeen ikinci satır ise o inputtaki dizinin tüm değerlerine ulaşmamızı sağlar.

All metodu dışında tüm değerlere ulaşmak için aşağıdaki kod parçacığını da kullanabilirsiniz.

  public function kayit_ol(Request $request)
    {
        $input = $request->input();
        print_r($input);
    }
//Tüm input değerlerini döndürür.

Query String Değerlerini Alma

Eğer formumuz get metodu ile geliyorsa değerleri almak için query metıdunu kullanabiliriz.

$name = $request->query('ad_soyad');

Eğer url'de böyle bir isim değeri yoksa kendimiz query metodunun 2. parametresi olarak varsayılan bir değer gönderebiliriz.

$name = $request->query('ad_soyad', 'Zafer Yıldız');

Url'den gelen tüm parametreleri almak için ise şu yöntemi kullanabiliriz:

$query = $request->query();

Json Input Değerlerini Alma

Uygulamamıza düzgün şekilde json değerleri göndermek için application-type=json headers komutunu uyguladıktan sonra json değerlerine istediğimiz şekilde ulaşabiliriz.

$name = $request->input('user.name');

Boolean Değerlerini Alma

Checkbox değerleri gibi verileri alırken bu yöntemi kullanırız. Eğer checkbox kutumuz işaretli yabi true ise sonuca şu şekilde ulaşabiliriz.

$school= $request->boolean('okuyor_mu');

Dinamik İnput Verilerini Alma

input() metodu kullanmadan $request nesnesi ile input değerlerine direk ulaşabiliriz.

$name = $request->ad_soyad;

Sadece İstediğimiz İnput Değerlerini Alma

only() metodu içerisine gönderdiğimiz dizi ile istediğimiz değerler dışında değer gelmesini engelleyebiliriz.

Bu metodu 2 farklı şekilde kullanabiliriz.

$input = $request->only(['ad_soyad', 'okul']);

$input = $request->only('ad_soyad', 'okul');

Gelen Input Değerini Engelleme

Eğer bir input değerini kullanmak istemişyorsak except metodu içinde bunu belirterek kullanılmasını engelleyebiliriz.

Bu yöntemi de 2 farklı şekilde kullanabiliriz.

$input = $request->except(['ad_soyad']);
$input = $request->except('ad_soyad');

Input Değerinin Gelip Gelmediğini Kontrol Etme

Bazı durumlarda gelen veri boş ya da gönderilmemiş olabilir. Bu da programın akışını engelleyebilir. Bunun için şu yöntemi kullanabiliriz.

if ($request->has('ad_soyad')) {
    //Değer varsa bu scope çalışır
}

Aynı yöntemi birden fazla input değeri için kullanabiliriz.

if ($request->has(['ad_soyad', 'sehir','okul'])) {
    //Değer varsa bu kod bloğu çalışır.
}

whenHas() metodu ile veri ne zaman var ise ona göre işlem yapabiliriz.

$request->whenHas('ad_soyad', function ($input) {
    //
});

hasAny() metodu ise belirtilen değerlerden herhangi biri gelmişse işlem yürütür.

if ($request->hasAny(['ad_soyad', 'okul'])) {
    //
}

İstek ile gelen bir değerin dolu ya da boş olduğunu öğrenmek için filled() metodunu kullanabilirsiniz.

if ($request->filled('ad_soyad')) {
            echo "Değer dolu";
        }

whenFilled() metodu ise değerin içi dolu ise işlem yapmamızı sağlar.

$request->whenFilled('ad_soyad', function ($input) {
    //
});

Belirli bir anahtar kelimenin istekte bulunup bulunmadığını kontrol etmek için missing() metodunu kullanabiliriz.

$request->whenFilled('ad_soyad', function ($input) {
    //
});


YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

1 YORUM

Muhammed Fatih BAĞCIVAN

08-May-2021

Form request konusu ile ilgili gayet güzel bir içerik olmuş hocam 😊 ellerinize emeğinize sağlık 😊


Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.