เข้าไปสร้างหรือจัดการในโฟลเดอร์ resources/views
คือ สำหรับดึงเนื้อหาใน @section(‘content’) …… @endsection มาแสดง
1 |
@yield('content', View::make('contentnotfound')) |
จากโค๊ดด้านบน หากไม่เจอ @section(‘content’)…@endsection ให้ไปดึงข้อมูลใน View : contentnotfound มาแสดง
ตัวอย่างสร้าง Layout Template แยกส่วน Header, Sidebar, Content, Footer
สร้างใว้ใน resources/views/layouts/app.blade.php
และมีการ include ไฟล์ย่อย
resources/views/layouts/header.blade.php
resources/views/layouts/sidebar.blade.php
resources/views/layouts/footer.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!-- Stored in resources/views/layouts/app.blade.php --> <html> <head> <title>App Name - @yield('title')</title> </head> <body> <div class="wrapper"> <!-- Header --> @include('layouts.header') <!-- Sidebar --> @include('layouts.sidebar') <!-- Content Wrapper. Contains page content --> <div class="content-wrapper"> <!-- Your Page Content Here --> @yield('content') </div> <!-- /.content-wrapper --> <!-- Footer --> @include('layouts.footer') </div> <!-- ./wrapper --> </body> </html> |
จากนั้นก็สร้างไฟล์แยกย่อยเป็น
resources/views/layouts/header.blade.php
resources/views/layouts/sidebar.blade.php
resources/views/layouts/footer.blade.php
สมมุติว่าเราจะสร้างหน้าสำหรับแก้ไขข้อมูล โดยสร้างไฟล์ resources/views/editview.blade.php
@extends(‘layouts.app’) คือเรียกใช้งาน Template หลัก
1 2 3 4 5 6 7 8 9 10 11 12 |
@extends('layouts.app') @section('title', 'Page Title') @section('sidebar') @parent <p>This is appended to the master sidebar.</p> @endsection @section('content') <p>This is my body content.</p> @endsection |
สำหรับในไฟล์ resources/views/layouts/sidebar.blade.php จะมีโค๊ดดังนี้
1 2 3 |
@section('sidebar') <p>Sidebar Menu</p> @show |
ในไฟล์ resources/views/editview.blade.php ในส่วนของโค๊ด
1 2 3 4 5 6 7 |
... @section('sidebar') @parent <p>This is appended to the master sidebar.</p> @endsection ... |
โค๊ดด้านบน
@parent คือจะดึงข้อมูลจาก sidebar.blade.php มาแสดงก่อนและตัวด้วยข้อมูลที่อยู่ใน @section(‘sidebar’) คือ <p>This is appended to the master sidebar.</p>
ดูตัวอย่างเพิ่มเติม https://seenual.com/laravel-ติดตั้ง-config-ใช้งาน-authentication-ใช้กั/#bladetemplate
ดูเพิ่มเติม https://laravel.com/docs/master/blade#template-inheritance
Validation Roles ดูได้จากลิ้งค์นี้ครับ https://laravel.com/docs/master/validation#available-validation-rules
หลักๆทำได้ 2 วิธี คือ
ใช้ Command ด้านล่าง เพื่อสร้าง
1 |
php artisan make:request StoreUserPost |
จากนั้นจะมีไฟล์ StoreUserPost.php ถูกสร้างใว้ที่โฟลเดอร์ app/Http/Requests
โดยในไฟล์มีโค๊ดดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
/** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'name' => 'required', 'phone' => 'required', 'email' => 'sometimes|required|email|unique:users,email,'.$this->user()->id, ]; } /** * Get the error messages for the defined validation rules. * * @return array */ public function messages() { /* return [ 'name.required' => 'A Name is required', 'phone.required' => 'A Phone is required', ];*/ return [ ]; } /** * Get custom attributes for validator errors. * * @return array */ public function attributes() { return [ 'name' => 'Name', 'phone' => 'Phone', 'email' => 'Email', ]; } |
function authorize() กำหนดให้เป็น true คือมีสิทธิ์ใช้ validation นี้
function rules() กำหนด ฟิวด์และ Role สำหรับตรวจสอบข้อมูล
function messages() กำหนดข้อความ Error สำหรับแต่ละ Role
function attributes() กำหนดในการแสดงชื่อ(Label) ของ แต่ละฟิวด์ ในการแสดง Error
ตัวอย่างโค๊ด ในไฟล์ Controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * 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... } |
หรือสร้าง Validation เอง ตามโค๊ดด้านล่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PostController extends Controller { /** * Store a new blog post. * * @param Request $request * @return Response */ public function store(Request $request) { $rules = [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; //Custom Error Messages $messages = [ 'required' => 'The :attribute field is required.', ]; $validator = Validator::make($request->all(),$rules,$messages); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } // Store the blog post... } } |
เช่น email ไม่ให้ซ้ำกับเรคคอร์ดอื่น แต่เวลาอัพเดทในเรคคอร์ดของตัวเอง ให้ยกเว้น ให้กำหนด rules ดังนี้
1 2 3 4 5 6 7 8 9 |
public function update(Request $request, $id) { ... $rules = [ ... 'email' => 'sometimes|required|email|unique:users,email,'.$id, ... ]; ... |
ตัวอย่าง แสดงทุก Error
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!-- /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 --> |
ตัวอย่าง แสดงในแต่ละ input field ที่ error
1 2 3 4 5 6 7 8 9 |
<!-- /resources/views/auth.blade.php --> <label for="email">Email address</label> <input id="email" type="email" class="@error('email') is-invalid @enderror"> @error('email') <div class="alert alert-danger">{{ $message }}</div> @enderror |
ดูเพิ่มเติม https://laravel.com/docs/master/validation#quick-displaying-the-validation-errors หรือ https://laravel.com/docs/master/blade#validation-errors
ป้ายกำกับ:Blade Templates, laravel, Validation