#14-Laravel-Form Validation

Secara default laravel telah menyediakan sebuah fungsi untuk membuat proses validasi form. yaitu kita bisa menggunakan fungsi validate().

Pada tutorial ini kita akan membuat contoh cara membuat form validasi pada laravel dengan sangat mudah.

Kita akan kembali menggunakan UserController.php dengan fitur CRUD

Tambahkan berikut pada controller UserController.php:create

$this->validate($request,[
           'fullname' => 'required|min:5|max:20',
           'email' => 'required|email',
           'password' => 'required|min:5|max:20'
        ]);

Sehingga menjadi

public function create(Request $request){
        if($request->btnSubmit){
            $this->validate($request,[
                'fullname' => 'required|min:5|max:20',
                'email' => 'required|email',
                'password' => 'required|min:5|max:20'
            ]);
            DB::table('user')->insert([
                'fullname' => $request->fullname,
                'email' => $request->email,
                'password' => $request->password,
                'last_update' => date('Y-m-d H:i:s'),
            ]);
            return redirect('/user');
        }
        $data['title']="User Create";
        return view('userform',$data);
    }

Buat file userform.blade.php

<!DOCTYPE html>
<html>
<head>
	<title>{{@$title}}</title>
    <link rel="stylesheet" type="text/css" href="{{ asset('/css/app.css') }}">
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-12">
                <h2><a href="https://ombagoes.com">ombagoes.com</a></h2>
                <h3>Data User</h3>
            
                <a href="/user"> Back</a>
                
                <br/>
                <br/>
                {{-- menampilkan error validasi --}}
                @if (count($errors) > 0)
                <div class="alert alert-danger">
                    <ul>
                        @foreach ($errors->all() as $error)
                            <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                </div>
                @endif
                <form action="{{url()->current()}}" method="post">
                    {{ csrf_field() }}
                    <div class="form-group">
                        <label for="Fullname">Fullname</label>
                         <input type="text" name="fullname" class="form-control" id="Fullname" placeholder="Fullname" />
                    </div>
                    <div class="form-group">
                        <label for="Email">Email address</label>
                        <input type="email" name="email" class="form-control" id="Email" placeholder="Email" />
                    </div>
                    <div class="form-group">
                        <label for="Password">Password</label>
                        <input type="password" name="password" class="form-control" id="Password" placeholder="Password" />
                    </div>
                    <input type="hidden" name="btnSubmit" value="Submit">
                    <button type="submit" class="btn btn-primary mb-2">Submit</button>
                </form>
            </div>
        </div>
    </div>
</body>
</html>

Perhatikan baris berikut pada userform.blade.php

{{-- menampilkan error validasi --}}
@if (count($errors) > 0)
<div class="alert alert-danger">
    <ul>
        @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
</div>
@endif

jika jumlah error lebih besar dari 0 (ada), maka tampilkan semua error dengan menggunakan fungsi foreach().

Mengubah Pesan Error Validasi Laravel

Kita juga bisa custom pesan error yang ditampilkan.

caranya buat variabel dan isi array seperti berikut di dalamnya. dan nama variabel nya isikan ke parameter ke tiga dalam fungsi validate(). seperti contoh berikut.

$messages = [
    'required' => ':attribute wajib diisi cuy!!!',
    'min' => ':attribute harus diisi minimal :min karakter ya cuy!!!',
    'max' => ':attribute harus diisi maksimal :max karakter ya cuy!!!',
];
$this->validate($request,[
    'fullname' => 'required|min:5|max:20',
    'email' => 'required|email',
    'password' => 'required|min:5|max:20'
],$messages);

Penerapannya akan seperti di bawah ini

User Custom Validation Form

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>