Cara menggunakan string validation php

Laravel menyediakan beberapa pendekatan berbeda untuk memvalidasi data masuk aplikasi Anda. Secara default, kelas kontroler dasar Laravel menggunakan sifat

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
0 yang menyediakan metode yang mudah untuk memvalidasi permintaan HTTP yang masuk dengan berbagai aturan validasi yang kuat.

Untuk mempelajari tentang fitur validasi Laravel yang kuat, mari kita lihat contoh lengkap memvalidasi formulir dan menampilkan pesan kesalahan kembali ke pengguna.

Pertama, mari kita asumsikan kita memiliki rute berikut yang ditentukan dalam file

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
1 :

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

Rute

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
2 akan menampilkan formulir bagi pengguna untuk membuat posting blog baru, sedangkan rute
$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
3 akan menyimpan posting blog baru dalam database.

Selanjutnya, mari kita lihat pengontrol sederhana yang menangani rute ini. Kami akan membiarkan metode

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
4 kosong untuk saat ini:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }

Sekarang kami siap mengisi metode

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
4 kami dengan logika untuk memvalidasi posting blog baru. Untuk melakukan ini, kita akan menggunakan metode
$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6 yang disediakan oleh objek
$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
7 . Jika aturan validasi berlalu, kode Anda akan tetap berjalan normal; Namun, jika validasi gagal, pengecualian akan dilemparkan dan respons kesalahan yang tepat secara otomatis akan dikirim kembali ke pengguna. Dalam kasus permintaan HTTP tradisional, respons redirect akan dihasilkan, sedangkan respons JSON akan dikirim untuk permintaan AJAX.

Untuk mendapatkan pemahaman yang lebih baik tentang metode

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6 , mari kembali ke metode
$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
4 :

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }

Seperti yang Anda lihat, kami meneruskan aturan validasi yang diinginkan ke metode

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6 . Sekali lagi, jika validasi gagal, respons yang tepat akan secara otomatis dihasilkan. Jika validasi berlalu, pengontrol kami akan melanjutkan eksekusi secara normal.

Atau, aturan validasi dapat ditetapkan sebagai array aturan, bukan tunggal

$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
1 string yang dibatasi:

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);

Anda dapat menggunakan metode

$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
2 untuk memvalidasi permintaan dan menyimpan pesan kesalahan apa pun dalam :

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);

Menghentikan Kegagalan Validasi Pertama

Terkadang Anda mungkin ingin berhenti menjalankan aturan validasi pada atribut setelah kegagalan validasi pertama. Untuk melakukannya, tetapkan aturan

$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
3 untuk atribut:

$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);

Dalam contoh ini, jika aturan

$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
4 pada atribut
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
5 gagal, aturan
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
6 tidak akan diperiksa. Aturan akan divalidasi sesuai urutan yang ditetapkan.

Catatan Atribut Bertumpuk

Jika permintaan HTTP Anda berisi parameter “bersarang”, Anda dapat menentukannya dalam aturan validasi Anda menggunakan sintaks “dot”:

$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);

Jadi, bagaimana jika parameter permintaan yang masuk tidak lulus aturan validasi yang diberikan? Seperti yang disebutkan sebelumnya, Laravel akan secara otomatis mengarahkan pengguna kembali ke lokasi sebelumnya. Selain itu, semua kesalahan validasi secara otomatis akan di- .

Sekali lagi, perhatikan bahwa kami tidak harus secara eksplisit mengikat pesan kesalahan ke tampilan di rute

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
2 kami. Ini karena Laravel akan memeriksa kesalahan dalam data sesi, dan secara otomatis mengikatnya ke tampilan jika tersedia. Variabel
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
8 akan menjadi instance dari
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
9 . Untuk informasi lebih lanjut tentang bekerja dengan objek ini, .

{tip} Variabel

$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
0 terikat pada tampilan oleh middleware
$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
1 , yang disediakan oleh grup middleware
$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
2 . Ketika middleware ini diterapkan, variabel
$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
0 akan selalu tersedia di tampilan Anda , memungkinkan Anda untuk dengan mudah menganggap variabel
$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
0 selalu ditentukan dan dapat digunakan dengan aman.

Jadi, dalam contoh kami, pengguna akan diarahkan ke metode

$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
5 pengontrol kami saat validasi gagal, memungkinkan kami untuk menampilkan pesan kesalahan dalam tampilan:

<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->

The $request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);6 Directive

Anda juga dapat menggunakan petunjuk

$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
6 Blade untuk memeriksa dengan cepat apakah ada pesan kesalahan validasi untuk atribut yang diberikan. Di dalam arahan
$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
6 , Anda dapat menggemakan variabel
$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
9 untuk menampilkan pesan kesalahan:

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror

Secara default, Laravel menyertakan middleware

<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
0 dan
<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
0 di tumpukan middleware global aplikasi Anda. Middleware ini terdaftar di stack oleh kelas
<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
2 . Karena itu, Anda harus sering menandai bidang permintaan "opsional" sebagai
<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
3 jika Anda tidak ingin validator menganggap nilai
<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
4 sebagai tidak valid. Sebagai contoh:

$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);

Dalam contoh ini, kami menetapkan bahwa bidang

<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
5 dapat berupa
<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
4 atau representasi tanggal yang valid. Jika pengubah
<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
3 tidak ditambahkan ke definisi aturan, validator akan menganggap
<!-- /resources/views/post/create.blade.php --> <h1>Create Post</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- Create Post Form -->
4 sebagai tanggal yang tidak valid.

Dalam contoh ini, kami menggunakan formulir tradisional untuk mengirim data ke aplikasi. Namun, banyak aplikasi menggunakan permintaan AJAX. Saat menggunakan metode

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6 selama permintaan AJAX, Laravel tidak akan menghasilkan respons pengalihan. Sebagai gantinya, Laravel menghasilkan respons JSON yang berisi semua kesalahan validasi. Respons JSON ini akan dikirim dengan kode status HTTP 422.

2. Laravel Form Request

Untuk skenario validasi yang lebih kompleks, Anda mungkin ingin membuat “permintaan formulir”. Formulir permintaan adalah kelas permintaan khusus yang berisi logika validasi. Untuk membuat kelas permintaan formulir, gunakan perintah

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
0 Artisan CLI:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
0

Kelas yang dihasilkan akan ditempatkan di direktori

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
1 . Jika direktori ini tidak ada, itu akan dibuat ketika Anda menjalankan perintah
<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
0 . Mari tambahkan beberapa aturan validasi ke metode
<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
3 :

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
1

{tip} Anda dapat mengetikkan petunjuk tentang setiap dependensi yang Anda butuhkan di dalam tanda tangan metode

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
3 . Mereka akan secara otomatis diselesaikan melalui wadah layanan Laravel

Jadi, bagaimana aturan validasi dievaluasi? Yang perlu Anda lakukan adalah mengetikkan petunjuk pada metode pengontrol Anda. Permintaan formulir yang masuk divalidasi sebelum metode controller dipanggil, artinya Anda tidak perlu mengacaukan controller Anda dengan logika validasi apa pun:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
2

Jika validasi gagal, respons redirect akan dihasilkan untuk mengirim pengguna kembali ke lokasi mereka sebelumnya. Kesalahan juga akan di-flash ke sesi sehingga tersedia untuk ditampilkan. Jika permintaan tersebut adalah permintaan AJAX, respons HTTP dengan kode status 422 akan dikembalikan kepada pengguna termasuk representasi JSON dari kesalahan validasi.

Menambahkan Setelah Kait Ke Formulir Permintaan

Jika Anda ingin menambahkan hook “setelah” ke permintaan formulir, Anda dapat menggunakan metode

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
5 . Metode ini menerima validator yang dibangun sepenuhnya, memungkinkan Anda untuk memanggil salah satu metodenya sebelum aturan validasi benar-benar dievaluasi:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
3

Kelas permintaan formulir juga berisi metode

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
6 . Dalam metode ini, Anda dapat memeriksa apakah pengguna yang diautentikasi benar-benar memiliki otoritas untuk memperbarui sumber daya yang diberikan. Misalnya, Anda dapat menentukan apakah pengguna benar-benar memiliki komentar blog yang mereka coba perbarui:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
4

Karena semua permintaan formulir memperpanjang kelas permintaan Laravel dasar, kami dapat menggunakan metode

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
7 untuk mengakses pengguna yang diautentikasi saat ini. Perhatikan juga panggilan ke metode
<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
8 pada contoh di atas. Metode ini memberi Anda akses ke parameter URI yang ditentukan pada rute yang dipanggil, seperti parameter
<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
9 dalam contoh di bawah ini:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
5

Jika metode

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
6 mengembalikan
$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
1 , respons HTTP dengan kode status 403 akan secara otomatis dikembalikan dan metode pengontrol Anda tidak akan dieksekusi.

Jika Anda berencana untuk memiliki logika otorisasi di bagian lain aplikasi Anda, kembalikan

$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
2 dari metode
<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
6 :

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
6

{tip} Anda dapat mengetikkan petunjuk tentang setiap dependensi yang Anda butuhkan dalam tanda tangan metode

<!-- /resources/views/post/create.blade.php --> <label for="title">Post Title</label> <input id="title" type="text" class="@error('title') is-invalid @enderror"> @error('title') <div class="alert alert-danger">{{ $message }}</div> @enderror
6 . Mereka akan secara otomatis diselesaikan melalui wadah layanan Laravel.

Anda dapat menyesuaikan pesan kesalahan yang digunakan oleh permintaan formulir dengan mengganti metode

$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
5 . Metode ini harus mengembalikan array pasangan atribut / aturan dan pesan kesalahan yang sesuai:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
7

Jika Anda ingin bagian

$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
6 pesan validasi Anda diganti dengan nama atribut khusus, Anda dapat menentukan nama-nama khusus dengan mengganti metode
$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
7 . Metode ini harus mengembalikan array pasangan atribut / nama:

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
8

Jika Anda perlu membersihkan data dari permintaan sebelum Anda menerapkan aturan validasi, Anda dapat menggunakan metode

$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
8 :

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
9

Jika Anda tidak ingin menggunakan metode

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6 pada permintaan, Anda dapat membuat instance validator secara manual menggunakan fasad
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
00 . Metode
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
01 pada fasad menghasilkan instance validator baru:

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
0

Argumen pertama yang diteruskan ke metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
01 adalah data di bawah validasi. Argumen kedua adalah aturan validasi yang harus diterapkan pada data.

Setelah memeriksa apakah validasi permintaan gagal, Anda dapat menggunakan metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
03 untuk
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
03 -flash pesan kesalahan ke sesi. Saat menggunakan metode ini, variabel
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
8 akan secara otomatis dibagikan dengan tampilan Anda setelah pengalihan, sehingga Anda dapat dengan mudah menampilkannya kembali ke pengguna. Metode
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
03 menerima validator,
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
07 , atau
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
08 PHP.

Jika Anda ingin membuat instance validator secara manual tetapi masih memanfaatkan pengalihan otomatis yang ditawarkan oleh metode

$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6 permintaan, Anda dapat memanggil metode
$validatedData = $request->validateWithBag('post', [ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6 pada instance validator yang ada. Jika validasi gagal, pengguna akan secara otomatis dialihkan atau, jika ada permintaan AJAX, respons JSON akan dikembalikan:

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
1

Anda dapat menggunakan metode

$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
2 untuk menyimpan pesan kesalahan dalam jika validasi gagal:

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
2

Jika Anda memiliki beberapa formulir pada satu halaman, Anda mungkin ingin memberi nama

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
07 kesalahan, memungkinkan Anda untuk mengambil pesan kesalahan untuk formulir tertentu. Berikan nama sebagai argumen kedua ke
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
03 :

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
3

Anda kemudian dapat mengakses instance

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
07 bernama dari variabel
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
8 :

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
4

Validator juga memungkinkan Anda untuk melampirkan panggilan balik untuk dijalankan setelah validasi selesai. Ini memungkinkan Anda untuk dengan mudah melakukan validasi lebih lanjut dan bahkan menambahkan lebih banyak pesan kesalahan ke koleksi pesan. Untuk memulai, gunakan metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
16 pada instance validator:

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
5

Setelah memanggil metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
17 pada instance
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
00 , Anda akan menerima instance
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
9 , yang memiliki berbagai metode mudah untuk bekerja dengan pesan kesalahan. Variabel
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);
8 yang secara otomatis disediakan untuk semua tampilan juga merupakan turunan dari kelas
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
07 .

Mengambil Pesan Kesalahan Pertama Untuk Bidang

Untuk mengambil pesan kesalahan pertama untuk bidang yang diberikan, gunakan metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
22 :

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
6

Mengambil Semua Pesan Kesalahan Untuk Suatu Bidang

Jika Anda perlu mengambil larik semua pesan untuk bidang yang diberikan, gunakan metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
23 :

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
7

Jika Anda memvalidasi bidang formulir array, Anda dapat mengambil semua pesan untuk setiap elemen array menggunakan karakter

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
24 :

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
8

Mengambil Semua Pesan Kesalahan Untuk Semua Bidang

Untuk mengambil larik semua pesan untuk semua bidang, gunakan

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
25 metode:

/** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // The blog post is valid... }
9

Menentukan Jika Pesan Ada Untuk Bidang

Metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
26 dapat digunakan untuk menentukan apakah ada pesan kesalahan untuk bidang yang diberikan:

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
0

Jika perlu, Anda dapat menggunakan pesan kesalahan khusus untuk validasi dan bukannya default. Ada beberapa cara untuk menentukan pesan khusus. Pertama, Anda dapat meneruskan pesan khusus sebagai argumen ketiga ke metode

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
27 :

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
1

Dalam contoh ini, placeholder

$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
6 akan diganti dengan nama aktual bidang di bawah validasi. Anda juga dapat menggunakan placeholder lain dalam pesan validasi. Sebagai contoh:

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
2

Menentukan Pesan Khusus Untuk Atribut Yang Diberikan

Terkadang Anda mungkin ingin menentukan pesan kesalahan khusus hanya untuk bidang tertentu. Anda dapat melakukannya menggunakan notasi “dot”. Tentukan nama atribut terlebih dahulu, diikuti oleh aturan:

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
3

Dalam sebagian besar kasus, Anda mungkin akan menentukan pesan khusus dalam file bahasa alih-alih mengirimkannya langsung ke

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
00 . Untuk melakukannya, tambahkan pesan Anda ke larik
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
30 di file bahasa
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
31 .

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
4

Menentukan Atribut Khusus dalam File Bahasa

Jika Anda ingin bagian

$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
6 pesan validasi Anda diganti dengan nama atribut khusus, Anda dapat menentukan nama kustom dalam array
$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
7 file bahasa
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
31 :

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
5

Menentukan Nilai Khusus dalam File Bahasa

Terkadang Anda mungkin memerlukan

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
35 bagian
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
35 dari pesan validasi Anda untuk diganti dengan representasi khusus dari nilai tersebut. Misalnya, pertimbangkan aturan berikut yang menetapkan bahwa nomor kartu kredit diperlukan jika jenis
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
37 memiliki nilai
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
38 :

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
6

Jika aturan validasi ini gagal, itu akan menghasilkan pesan kesalahan berikut:

$validatedData = $request->validate([ 'title' => ['required', 'unique:posts', 'max:255'], 'body' => ['required'], ]);
7

Alih-alih menampilkan

<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
38 sebagai nilai jenis pembayaran, Anda dapat menentukan representasi nilai khusus dalam file bahasa
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
40 Anda dengan mendefinisikan array
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostController extends Controller { /** * Show the form to create a new blog post. * * @return Response */ public function create() { return view('post.create'); } /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { // Validate and store the blog post... } }
41 :