Validator trực tiếp trong ControllerLưu sẽ chuyển dữ liệu đến action store để xử lý lưu trữ. Chúng ta sẽ bắt ràng buộc dữ liệu trong action này.app\Http\Controllers\ChuDeController.php<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\ChuDe;
use Session;
use Validator;
class ChuDeController extends Controller
{
...
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
// var_dump();die;
// print_r();die;
// dd($request); //Dump and die
// Kiểm tra ràng buộc dữ liệu (validation)
$validator = Validator::make($request->all(), [
'cd_ten' => 'required|min:3|max:50|unique:cusc_chude',
]);
// Nếu kiểm tra ràng buộc dữ liệu thất bại -> tức là dữ liệu không hợp lệ
// Chuyển hướng về view "Thêm mới" với,
// - Thông báo lỗi vi phạm các quy luật.
// - Dữ liệu cũ (người dùng đã nhập).
if ($validator->fails()) {
return redirect(route('backend.chude.create'))
->withErrors($validator)
->withInput();
}
$cd = new ChuDe();
$cd->cd_ten = $request->input('cd_ten');
$cd->cd_trangThai = 2;
$cd->save();
Session::flash('alert-warning', 'Thêm mới thành công ^^~!!!');
return redirect()->route('backend.chude.index');
}
...
}
resources\views\backend\layout\partials\error-message.blade.php<!-- DIV hiển thị thông báo lỗi start -->
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<!-- DIV hiển thị thông báo lỗi end -->
resources\views\backend\layout\master.blade.php<!doctype html>
<html lang="en">
<head>
...
</head>
<body>
...
<!-- Main content -->
<div class="container-fluid">
<div class="row">
<!-- Sidebar -->
@include('backend.layout.partials.sidebar')
<!-- End sidebar -->
<!-- Content -->
<main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4">
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2">@yield('feature-title')</h1>
<small>@yield('feature-description')</small>
</div>
@include('backend.layout.partials.error-message')
@include('backend.layout.partials.flash-message')
@yield('content')
</main>
<!-- End content -->
</div>
</div>
<!-- End main content -->
...
</body>
</html>
resources\views\backend\chude\create.blade.php...
@section('content')
<form id="frmChuDe" name="frmChuDe" method="post" action="{{ route('backend.chude.store') }}">
{{ csrf_field() }}
<div class="form-group">
<label for="cd_ten">Tên chủ đề</label>
<input type="text" class="form-control" id="cd_ten" name="cd_ten" aria-describedby="cd_tenHelp" placeholder="Nhập tên chủ đề" value="{{ old('cd_ten') }}">
<small id="cd_tenHelp" class="form-text text-muted">Nhập tên chủ đề. Giới hạn trong 50 ký tự.</small>
</div>
<button class="btn btn-primary">Lưu</button>
</form>
@endsection
...
Custom Request để kiểm tra ràng buộc dữ liệuCustom Request cho việc Thêm mới Chủ đềphp artisan make:request ChuDeCreateRequest
ChuDeCreateRequest<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ChuDeCreateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true; // Tạm thời không phân quyền
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'cd_ten' => 'required|min:3|max:50|unique:cusc_chude', //tên table cusc_chude
];
}
public function messages()
{
return [
'cd_ten.required' => 'Tên chủ đề bắt buộc nhập',
'cd_ten.min' => 'Tên chủ đề ít nhất phải 3 ký tự trở lên',
'cd_ten.max' => 'Tên chủ đề tối đa chỉ 50 ký tự',
'cd_ten.unique' => 'Tên chủ đề này đã tồn tại. Vui lòng nhập tên chủ đề khác'
];
}
}
store sử dụng ChuDeCreateRequest để kiểm tra ràng buộc dữ liệu<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\ChuDe;
use Session;
use Validator;
use App\Http\Requests\ChuDeCreateRequest;
class ChuDeController extends Controller
{
...
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(ChuDeCreateRequest $request)
{
// var_dump();die;
// print_r();die;
// dd($request); //Dump and die
// // Kiểm tra ràng buộc dữ liệu (validation)
// $validator = Validator::make($request->all(), [
// 'cd_ten' => 'required|min:3|max:50|unique:cusc_chude', //tên table
// ]);
// // Nếu kiểm tra ràng buộc dữ liệu thất bại -> tức là dữ liệu không hợp lệ
// // Chuyển hướng về view "Thêm mới" với,
// // - Thông báo lỗi vi phạm các quy luật.
// // - Dữ liệu cũ (người dùng đã nhập).
// if ($validator->fails()) {
// return redirect(route('backend.chude.create'))
// ->withErrors($validator)
// ->withInput();
// }
$cd = new ChuDe();
$cd->cd_ten = $request->input('cd_ten');
$cd->cd_trangThai = 2;
$cd->save();
Session::flash('alert-warning', 'Thêm mới thành công ^^~!!!');
return redirect()->route('backend.chude.index');
}
...
}
Cùng nhau học tập, khám phá các kiến thức nền tảng về Lập trình web, mobile, database nhé.
Nền tảng kiến thức - Hành trang tới tương lai hân hạnh phục vụ Quý khách!
Khám phá, trải nghiệm ngay
Vui lòng đăng nhập để gởi bình luận!
Đăng nhậpChưa có bình luận nào!