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!