Laravel Form Verilerini Tekrar Kullanma

Bu yazımızda Laravel Request İşlemleri yaparken kullanacağımız flash session ve eski inputların tekrar kullanılması olayına değineceğiz.

Laravel, sonraki istek sırasında bir istekten girişi tutmanıza izin verir. Bu özelliği kullanma amacımız ise form validation yani doğrulama işlemi yaptıktan sonra hatayı ekranda gösterme ve formu post ederken girdiğimiz input verilerini tekrardan ekranda göstermektir.

Bununla birlikte laravel ile otomatik gelen form validation işlemini kullanıyorsanız laravel bunu sizin için otomatik olarak halleder.

Laravel Flash Session Kullanımı

Request Sınıfındaki flash metodu bizlere yönlendirdiğimiz sayfada kullanmamız için tek kullanımlık session verisi oluşturur.

Temel kullanımı şu şekildedir.

$request->flash();

Laravel FlashOnly Metodu

FlashOnyl flash session içerisinde sadece belli Request değerlerini tutmak için kullanılır.

$request->flashOnly(['username', 'email']);

Laravel FlashExcept Metodu

Laravel flashexcept metodu ile şifreler ve kaydedilmesini istemediğimiz değerleri oluşturacağımız flash sessionun dışında tutabiliriz.

$request->flashExcept('password');

Flash Sessionları View View Dosyasına Yönlendirme

Controller dosyasında oluşturduğumuz sessionları view dosyasında göstermek için redirect komutuyla göndermek istediğimiz url'e withInput metodu ile gönderebiliriz.

Bunu 3 şekilde gerçekleştirebiliriz.

return redirect('form')->withInput();

return redirect()->route('user.create')->withInput();

return redirect('form')->withInput(
    $request->except('password')
);

Eski İnput Bilgilerini Alma

Yukarıdaki bilgileri kullanarak gönderdiğimiz flash dataları blade template yapısında old metodu ile kullanabiliriz.

Post ettiğimiz metoddan ulaşmak için:

$username = $request->old('username');

Form içerisinde kullanmak:

<input type="text" name="username" value="{{ old('username') }}">

Şimdi bunları bir örnekle pekiştirelim. Bir adet 3 girişi olan bir formumuz olsun ve flash sessionlar ile bunları kontrol edelim.

register.blade.php dosyamız.

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">


    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <title>Kodlamaklazim Laravel Form</title>
  </head>
  <body>
   <div class="row">
       <div class="col-md-4"></div>
       <div class="col-md-4">
        <div class="contaier mt-5">
            <form method="post" action="{{route('kayit_ol')}}">
                @csrf
                <div class="form-group">
                    <label>Adınız Ve Soyadınız</label>
                    <input type="text" class="form-control" name="ad_soyad" value="{{ old('ad_soyad') }}">
                  </div>   
                  <div class="form-group">
                    <label>Okulunuz</label>
                    <input type="text" class="form-control" name="okul" value="{{ old('okul') }}">
                  </div>  
                  <div class="form-group">
                    <label>Yaşadığınız Şehir</label>
                    <input type="text" class="form-control" name="sehir" value="{{ old('sehir') }}">
                  </div>
                
                <button type="submit" class="btn btn-primary">Kayıt Ol</button>
              </form>
        </div>
       </div>
       <div class="col-md-4"></div>
   </div>
  
   
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
  </body>
</html>

USerController.php Dosyamız

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Hash;
class UserController extends Controller
{
    public function register()
    {  
        return view('register');
    }
    public function kayit_ol(Request $request)
    { 
         $request->flash();
         return redirect('/')->withInput();
    }
}


YAZAR HAKKINDA

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

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

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