เก็บรวบรวมหัวข้อที่น่าสนใจครับ
- หน้า website หลักของ Laravel
- การ installation Laravel ติดตั้งได้ 2 วิิธี คือ “
laravel new blog
” และ “composer create-project --prefer-dist laravel/laravel blog
” เลือกเองได้โตแล้ว หรือจะเข้าไปดูรายละเอียดได้จากลิ้งนี้ Installation Laravel
- Laravel มีคำ command ที่ชาญฉลาด (artisan) 1 ในคำสั่งนั้นคือ “
php artisan serve"
เราก็จะได้ web server ที่ start พร้อม dev ได้แล้ว โดย access เข้าด้วย http://localhost:8000
- config Laravel ต่าง ๆ จะอยู่ที่ไฟล์ .env ตัวอย่างเช่น database ,app name เป็นต้น
- ถ้าอยากจะ dev laravel ให้คล่องแคร่วและ ว่องไว ควรจะรู้ว่าไฟล์ต่าง ๆ อยู่ที่ไหนบ้าง ดังนั้นควรศึกษาให้เข้าใจในเรื่อง Directory Structure
- Route (URL ของแต่ละ Page) จะเก็บรวบรวมอยู่ที่ไฟล์
routes/web.php
กำหนดเพิ่มได้ที่ไฟล์นี้
- Route [::get,::post,::put,::patch,::delete,::options] โดยพื้นฐาน แต่ก็มี [::match,::any] ให้ใช้งานหากต้องการเพิ่มความสามารถในการใช้งานที่มีความหลากหลายมากขั้น ทำความเข้าใจเพิ่มเติมได้ที่ Routing
- Route::get มีความสามารถในการกำหนด optional parameters ได้โดยใส่ “/
{name?}
” และกำหนดค่า default ไว้ใน callback function แทนหากไม่มีการส่งค่า parameters {name?}
- Route::get validate parameters ได้ด้วย Regular Expression Constraints ตัวอย่าง
->where('id' => '[0-9]+');
คือการกำหนดให้ส่งค่า parameter {name} ได้แต่ตัวเลข 0–9 ได้เท่านั้น
- Route::fallback กำหนด url ที่เกิดกรณี 404 page not found
- cross-site request forgery (CSRF) เพิ่มความ secure โดยการเพิ่ม
@csrf
ใน form POST ศึกษาเพิ่มเติมที่นี่ CSRF Protection
- X-CSRF-TOKEN function POST จะมีการ check X-CSRF-TOKEN request header แก้โดยเพิ่ม “
<meta name="csrf-token" content="{{ csrf_token() }}">
” ไว้ใน tag header ของ layout page
- สร้าง Controller File เพื่อแยก Business Logic ออกจากไฟล์ /route/web.php และทำการ Mapping Route ด้วย
Route::get('user/{id}', 'UserController@show')
แทนการเขียน Logic ในไฟล์ /route/web.php
- สร้างไฟล์ Controller ด้วยคำสั่ง
php artisan make:controller PhotoController
ช่วยลดเวลาการ dev ได้ ศึกษาเพิ่มเติมได้ที่ลิ้งน Controller
- Get Data จาก
Illuminate\Http\Request
parameters มีด้วยกันหลายวิธี $request->input[‘name’] ,
$request->all() จะได้ array ,
$request->name ,
$request->query(‘name’) จะได้ parameter name จาก queryString ,
$request->input(‘user.name’) อ่าน jsonbody จาก post data { “user” : {“name” : “medium”}} ,
$request->filled(‘name’) check input name is empty ?
- Get Cookie จาก
Illuminate\Http\Request
จะใช้ $request->cookie('name');
หรือ Cookie::get('name')
ก็ได้ไม่มีปัญหา
- Get File Data จาก
Illuminate\Http\Request
$request->file(‘photo’) หรือ $request->photo ใช้ function has ตรวจสอบ File ว่ามีค่ามาหรือไม่ด้วย $request->has('photo')
ก็จะ self code ได้ระดับนึง
- สร้าง Response Object ด้วย
Illuminate\Http\Response
มีด้วยกันหลายวิธีตัวอย่างเช่น return response('Hello World', 200)
->header('Content-Type', 'text/plain');
- Redirect
Illuminate\Http\RedirectResponse
ทำได้ด้วย return redirect('home/dashboard');
หรืออยากจะย้อนกลับไป step ก่อนหน้า return back()->withInput();
- Redirect
Illuminate\Http\RedirectResponse
โดยการแนบ Flash Session Data เพื่อใช้ไว้การแจ้งเตือนการทำ transaction status ด้วย return redirect('dashboard')->with('status', 'Profile updated!');
- สร้าง Response JSON ด้วย
return response()->json([ 'name' => 'Abigail', 'state' => 'CA']);
- สร้าง Response Streamed Downloads ด้วย
return response()->download($pathToFile);
- สร้าง view และเรียกใช้คำสั่ง
return view('admin.profile', $data);
โดยสร้างไฟล์ view ไว้ที่ resources/views/admin/profile.blade.php
- อ้างอิง URL ของแต่ละ route path ด้วย
url("/posts/{$post->id}"); http://example.com/posts/1
- ว่าด้วยเรื่องการเก็บข้อมูล Session
– Session::get(“key”) หรือ $request->session()->get(“key”) เพื่อ Get Data
– Session:put(“key”,”value”) หรือ $request->session()->put(“key”,”value”) เพื่อ Set Data
– Session::exists(“key”) หรือ $request->session()->exists(“key”); เพื่อ Check Key เคยมีใน session แล้วหรือยัง
– Session::push(“key”,”value”) หรือ $request->session()->push(“key”,”value”) เพิ่มค่า item ใน session array
– Session::pull(‘key’,”default”) ลบค่า item ใน session array
– Session::forget(“key”) หรือ $request->session()->forget(“key”) ลบ session
- เรื่อง Validate Input
$request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
validate input return ค่า error จากนั้นก็ set Flash Data ให้กลับไปที่หน้า form ด้วย return redirect('post/create')
->withErrors($validator)
->withInput();
ศึกษาเพิ่มเติมได้ที่ลิ้งนี้ Validate
- Logger เพิ่ม code logger ช่วยให้ตรวจสอบปัญหา ได้เมื่อ Deploy บน Production ศึกษาเพิ่มเติมได้ที่ Logger
Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);
- Blade Template extending layout reuse Code Layout Template ใช้งานกับหน้าจออื่น ๆ ลด Duplicate code ตัวอย่าง BladeTemplate
- Blade Component สร้างไฟล์ component.blade.php กับ Code ที่ Duplicate เยอะ ๆ แยกออกมาเขียนแยกเป็น external file แล้วเรียกใช้งานด้วย @component(‘component’)@endcomponent ศึกษาเพิ่มเติมได้ที่นี่ BladeComponent
htmlspecialchars
{!! $name !!}.
แสดงค่า value ที่เป็น html
- pass Json Object to vue props ด้วย
<example-component :some-prop='@json($array)'></example-component>
- blade template condition if else ,loop ,while ,swith ,empty ,isset
IF ELSE: @if (true) @else @endif
IF : @if (true) @endif
IF ELSEIF ELSE: @if (true) @elseif (true) @else @endif
SWITCH CASE: @switch (value) @case (true) @break @endswitch
FOR: @for @endfor
FOREACH: @foreach @endforeach
WHILE: @while @endwhile
- locale ทำ multiple language ศึกษาเพิ่มเติม Localization
- Laravel MIX compile resource (js,css,image,…) Laravel MIX
ที่มา : https://medium.com/@poolsawat.com/50-ข้อที่ควรทราบ-เมื่อเริ่มต้นพัฒนา-website-ด้วย-laravel-5-x-82ea78bf8e87
Vue.js คืออะไร? + สอนใช้งาน Vue.js ฉบับเริ่มต้น
https://devahoy.com/blog/2019/08/introduction-to-vuejs/
https://backpackforlaravel.com/docs/3.4/crud-tutorial
http://www.expertphp.in/article/how-to-get-table-name-and-table-column-names-from-model-in-laravel-5
https://gist.github.com/cjthomp/1455c39d4a14292676ea
https://medium.com/ideagital/มาใช้งาน-laravel-crud-generator-ตัวช่วยสร้าง-crud-สำเร็จรูป-c465ffe8f074
https://laracasts.com/discuss/channels/general-discussion/possible-to-auto-generate-forms-based-on-model?page=1
ป้ายกำกับ:laravel, Tips and Tricks