Digitalmapia adalah situs dimana semua orang bisa menulis artikelnya sendiri. Klik "Login/Register untuk masuk, lalu klik "Tulis Artikel" untuk mulai menulis.

Membuat validation menggunakan Laravel

Ketika anda membuat sebuah form untuk memasukan data ke dalam database, tentu anda tidak ingin membiarkan pengguna meng-klik tombol ‘submit’ tanpa memasukan data apa-apa pada form, atau mungkin anda ingin mem-filter supaya pengguna tidak memasukan data yang berbahaya (berkaitan dengan cracking) pada form yang anda buat. Nah, untuk itulah validasi dibutuhkan.

Membuat Form

Sebelum membuat validation, tentu kita harus membuat form terlebih dahulu. Seperti pada artikel-artikel saya yang lainnya, untuk membuat form tersebut kita akan menggunakan bantuan twitter bootstrap. Untuk itu, unduh twitter bootstrap kemudian tempatkan pada folder public seperti berikut:

Bootstrap di dalam direktori publik laravel

Bootstrap di dalam direktori publik laravel

Setelah itu mari kita mulai membuat form, pertama buat sebuah route sebagai berikut:

	Route::get('product/create'        , 'ProductController@create');
	Route::post('product/store'        , 'ProductController@store');

Kemudian buat pula controller dengan nama file ProductController.php dengan isi file sebagai berikut:

<?php

class ProductController extends \BaseController {

	public function create()
	{

	}

	public function store()
	{

	}
}

?>

Pada contoh diatas kita membuat routes yang digunakan untuk menampilkan form untuk memasukan product yaitu ‘product/create’ dan satu lagi ‘product/store’ dimana ketika tombol submit pada form di-klik maka halaman akan diarahkan ke route ini. Perhatikan bahwa route yang pertama menggunakan method ‘get’ sedangkan yang kedua menggunakan method ‘post’.

Untuk membuat form tambahkan perintah berikut pada fungsi create:

	public function create()
	{
		return View::make('product.create');
	}

Kemudian, jangan lupa untuk membuat file baru dengan nama create.blade.php direktori app/views/product. Jika direktori product belum ada silahkan anda buat sendiri. Isi dari file create.blade.php adalah sebagai berikut:

@extends('layout.default')	

@section('content')
	<div class="container">
		<div class="panel">
			<div class="panel-heading">Create new product</div>
			<div class="panel-body">

				{{ Form::open(array('action' => 'ProductController@store','class' => 'bs-example form-horizontal',)) }}

					<!-- Name -->
	              	{{ Form::Text('product_name', 'Product Name', array('class' => 'form-control')) }}

	              	<!-- Description -->
	              	{{ Form::Textarea('product_desc', 'Product Description', array('class' => 'form-control')) }}

	              	<!-- Submit -->
	              	{{ Form::FGSubmit() }}

				{{ Form::close() }}

			</div>
		</div>
	</div>
@stop

Perhatikan perintah @extends('layout.default'), kita lihat pada kode tersebut bahwa kita menggunakan sebuah layout dengan nama default yang berada pada folder layout. Namun, layout tersebut sebenarnya belum kita buat. Untuk itu, buatlah sebuah direktori baru app/views/layout, kemudian didalamnya buat file default.blade.php sebagai berikut:

<!-- app/views/layout/default.blade.php -->

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Aplikasi Kita</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />

  {{ HTML::style('css/bootstrap.css') }}

</head>
<body>

  @yield('content')

  {{ HTML::script('js/jquery.min.js') }}
  {{ HTML::script('js/bootstrap.js') }}
</body>
</html>

Setelah itu akses route product/create pada browser dengan mengetikan:

	http://localhost/product/create

Maka form yang barusan anda buat akan ditampilkan.

Lakukan validasi

Setelah form kita buat, kita akan memfilter form tersebut supaya ‘product name’ dan ‘product description’ wajib diisi. Pertama-tama pada fungsi store tambahkan rules sebagai berikut:

<!-- app/controller/ProductController -->

public function store()
{
    $rules = array(
        'product_name' => 'required',
        'product_desc' => 'required'
    );

}

Setelah itu, masih pada fungsi yang sama. Kita akan mengecek apakah ‘rules (aturan)’ yang telah kita buat tersebut terpenuhi atau tidak. Dalam hal ini, rule yang dimaksud adalah required artinya ‘product_name’ dan ‘product_desc’ wajib diisi.

<!-- app/controller/ProductController -->

public function store()
{
    $rules = array(
        'product_name' => 'required',
        'product_desc' => 'required'
    );

    $validation = Validator::make(Input::all(), $rules);
    if($validation->fails()) {
            echo $validation->messages();
    }

    <!-- Jika validasi berhasil, maka anda dapat memasukan product_name dan product_description ke database. Kodenya dapat anda tulis disini. Namun jika validasi gagal, maka pesan error akan ditampilkan -->

}

Menampilkan pesan error pada halaman form

Sampai sini, saya yakin anda sudah mengerti cara membuat validasi dengan Laravel. Sekarang, kita akan menampilkan pesan error pada form jika validasi yang kita buat gagal. Pada fungsi store, ubah perintah echo $validation->messages() menjadi perintah berikut:

	return Redirect::back()->withInput()->withErrors($validation->messages());

Dengan demikian, ketika validasi gagal, halaman akan diarahkan kembali ke halaman form. Kita juga perlu mengubah halaman form agar error tersebut bisa ditampilkan. Halaman form yang terdapat pada file create.blade.php akan kita ubah menjadi sebagai berikut:

@extends('layout.default')	

@section('content')
	<div class="container">
		<div class="panel">
			<div class="panel-heading">Create new product</div>
			<div class="panel-body">

				{{ Form::open(array('action' => 'ProductController@store','class' => 'bs-example form-horizontal')) }}

					<!-- Name -->
	              	{{ Form::Text('product_name', 'Product Name', array('class' => 'form-control')) }}
	              	{{ $errors->first('product_name', '<div class="alert alert-danger"><b>:message</b></div>')  }}

	              	<!-- Description -->
	              	{{ Form::Textarea('product_desc', 'Product Description', array('class' => 'form-control')) }}
	              	{{ $errors->first('product_desc', '<div class="alert alert-danger"><b>:message</b></div>')  }}

	              	<!-- Submit -->
	              	{{ Form::FGSubmit() }}

				{{ Form::close() }}

			</div>
		</div>
	</div>
@stop

Sekarang, silahkan anda buka halaman form, kemudian tekan tombol submit tanpa mengisi form-nya terlebih dahulu. Maka dua buah error akan ditampilkan yaitu dibawah kotak ‘product_name’ dan satu lagi di bawah kotak ‘product_desc’.

Semoga bermanfaat.

Laravel Wallpapper
  • miruza annas

    itu setelah yang

    $validation = Validator::make(Input::all(), $rules);
    if($validation->fails()) {
    echo $validation->messages();
    }

    langsung masuk ke Coding CRUD ya ?