Giới thiệu Laravel Framework Giới thiệu Laravel Framework Bài 1 : Cài đặt Sublime Text FreeBài 2 : Cài đặt Xampp FreeBài 3 : Cài đặt Composer FreeBài 4 : Cài đặt Laravel FreeBài 5 : Cấu trúc của Route FreeBài 6: Truyền tham số trên Route FreeBài 7 : Định danh và nhóm Route FreeBài 8 : Cơ bản về Controller FreeBài 9 : Truyền dữ liệu cho Controller FreeBài 10 : Làm việc với URL trên Request FreeBài 11: Gửi nhận tham số trên Request FreeBài 12: Sử dụng Cookie với request và response FreeBài 13 : Upload File FreeBài 14: Làm việc với các thành phần của File FreeBài 15: Xuất dữ liệu dạng JSON FreeBài 16 : Tìm hiểu về View FreeBài 17 : Truyền dữ liệu trên View FreeBài 18: Mô hình MVC trong Laravel FreeBài 19: Tìm hiểu về Blade Template FreeBài 20: Nhúng CSS trong Blade Template FreeBài 21: Hiển thị dữ liệu trên trang giao diện FreeBài 22: Câu lệnh điều kiện p1 FreeBài 23: Câu lệnh điều kiện p2 FreeBài 24: Cấu hình cơ sở dữ liệu FreeBài 25 : Tạo bảng với Schema FreeBài 26: Chỉnh sửa bảng với Schema FreeBài 27: Quản lý cơ sở dữ liệu với Migrate FreeBài 28: Sử dụng Migrate để rollback dữ liệu FreeBài 29: Tạo dữ liệu mẫu với Seed FreeBài 30: Truy vấn dữ liệu với Query Builder phần 1 FreeBài 31: Truy vấn dữ liệu với Query Builder phần 2 FreeBài 32: Truy vấn dữ liệu với Query Builder phần 3 FreeBài 33: Tìm hiểu về Model FreeBài 34 : Truy vấn dữ liệu với Model FreeBài 35: Liên kết dữ liệu trong Model FreeBài 36: Bảo mật với Middleware FreeBài 37: Tìm hiểu về Auth FreeBài 38: Quản lý đăng nhập với Auth FreeBài 39: Làm việc cùng Session FreeBài 40: Phân trang với Pagination FreeBài 41: Chỉnh CSS trong Pagination Free
Cài đặt Laravel Để cài Laravel, bạn qua bước : Bước 1: Cài đặt Composer Bước 2: Cài đặt Laravel Lưu ý : máy tính bạn phải cài sẵn Xampp, Wamp trước làm Cài đặt Composer https://getcomposer.org/Composer-Setup.exe Trong trình cài đặt, bạn composer báo chọn đến file php.exe xampp wamp Trung Tâm Đào Tạo Tin Học Khoa Phạm Sau cài đặt xong, composer có yêu cầu bạn làm bước sau: Mở cmd.exe Đóng tất cửa sổ windows lại ( bao gồm cmd.exe ) Mở lại cmd.exe Đóng lại logout khỏi windows , sau login lại Cuối ta bật cmd.exe lên xong Cài đặt Laravel với composer Khởi động cmd, truy cập vào thư mục muốn cài đặt Laravel composer create-project –prefer-dist laravel/laravel {Tên project Laravel} Trung Tâm Đào Tạo Tin Học Khoa Phạm Giới thiệu cấu trúc thư mục + App\Http : Chứa điều khiển route, controller,… Ta phải dùng nhiều tới thư mục + Config : Chứa file cấu hình cho hệ thống + Database : Nơi cấu hình liệu mẫu : migrate, seed + Public : Nơi lữu trữ thư viện CSS, JavaScript, hình ảnh + Resources\Views : Lưu trữ file giao diện mã html views +File env: Cài đặt liên kết tới database cho hệ thống Trung Tâm Đào Tạo Tin Học Khoa Phạm Tìm hiểu Route Cấu trúc Route Truyền tham số Route Định danh cho Route Route Group Cấu trúc Route Trung Tâm Đào Tạo Tin Học Khoa Phạm Truyền tham số Route 2.1 Truyền tham số Route Truyền tham số Route Route::get( 'myroute/{ten}' , function($ten){ return “Chào bạn” $ten; } ); Không truyền giá trị cho tham số Route::get( 'myroute/{ten?}' , function($ten = ‘default’){ return “Chào bạn” $ten; } ); 2.2 Đặt điều kiện cho tham số với phương thức where(); Điều kiện chữ Điều kiện số Route::get( 'myroute/{ten}' , function($ten){ Route::get( 'myroute/{so}' , function($ten){ return “Chào bạn” $ten; return “Chào bạn” $ten; } )->where([ ‘ ten ’ => ‘ *a-zA-Z++ ’ ]); } )->where([ ‘ so ’ => ‘ *0-9++ ’ ]); Các trường hợp khác Tên trường hợp Chỉ cho phép số có từ -> 32 số Chỉ cho phép số có chữ số Cho phép chữ số Cho phpes chữ số , giới hạn ký tự Regular Expression ‘ so ’ => ‘ *0-9]{6,32} ’ ‘ so ’ => ‘ *0-9]{5}’ ‘ so ’ => ‘ *0-9a-zA-Z++ ’ ‘ so ’ => ‘ *0-9a-zA-Z]{6} ’ Định danh cho Route Cách : Khai báo ‘as’=> ‘Tên Route’ tham số sau: Route::get( 'myroute' , [ ‘as’ => ‘newname’ , function() { return “Đã đổi tên”; } ] ); Cách : Cách ngắn gọn dễ dùng : thêm phương thức name(‘tên route’) cuối Route::get( 'myroute' , function() { return “Đã đổi tên”; } )->name(‘tên route’); Trung Tâm Đào Tạo Tin Học Khoa Phạm Gọi Route tên đặt, ta sử dụng route(‘ten route’); Route::get( 'myroute' , function(){ return redirect()->route(‘tên route’); }); Route Group Route::group([ ‘prefix’ => ‘MyGroup’ ] , function(){ //Gọi Route User1: domain/MyGroup/User1 Route::get(‘User1’, function(){ return ‘User1’ }); //Gọi Route User2: domain/MyGroup/User2 Route::get(‘User2’, function(){ return ‘User2’ }); //Gọi Route User3: domain/MyGroup/User3 Route::get(‘User3’, function(){ return ‘User3’ }); }); Trung Tâm Đào Tạo Tin Học Khoa Phạm CONTROLLER Cấu trúc Controller Tạo Controller Gọi Controller từ Route Gửi nhận liệu từ Route sang Controller Cấu trúc Controller Các Controller lưu thư mục App/Http/Controllers Laravel namespace App\Http\Controllers; class MyController extends Controller { //Thực công việc } Trung Tâm Đào Tạo Tin Học Khoa Phạm Tạo Controller Tạo Controller với cmd: php artisan make:controller MyController Gọi Controller Để gọi hàm Controller ta phải thông qua Route cách khai báo sau: Gọi Route::get('goiController/{id}', ‘MyController@GetData’); Nhận liệu bên Controller class MyController extends Controller { public function GetData($id) { echo “Xin Chào !”; } } Nhận liệu từ Route Truyền tham số id từ Route Route::get('goiController/{id}', ‘MyController@GetData’); Trung Tâm Đào Tạo Tin Học Khoa Phạm Nhận liệu bên Controller class MyController extends Controller { public function GetData($id) { echo “Đã nhận ” $id; } } Gửi nhận liệu với Request Responses Làm việc với URL Gửi nhận tham số Request Sử dụng Cookie với Request Response Files Upload Làm việc với URL Cài đặt Route Route::get('goi/Controller', ‘MyController@GetData’); Làm việc bên Controller use Illuminate\Http\Request; use App\Http\Requests; class MyController extends Controller { public function GetData(Request $request) { echo $request->path(); } } Kết : goi/Controller Trung Tâm Đào Tạo Tin Học Khoa Phạm Mở rộng Phương thức $request->url(); $request->is('admin/*'); $request->isMethod('post'); Chức Trả URL đầy đủ Kiểm tra URL có chứa chuỗi ‘admin/’ hay không Kiểm tra phương thức truyền Gửi nhận tham số Request Cài đặt Route Route::get('getForm',function(){ return view(‘welcome’); }); Nhận liệu bên Controller use Illuminate\Http\Request; class MyController extends Controller { //trả tham số truyền request public function postForm(Request $request) { echo $request->name; } } Route::post('postForm',[ 'as'=>'postForm', 'uses'=>'MyController@postForm' ]); Resources/views/welcome.blade.php Kết : Hiển thị tên bạn vừa nhập vào form Mở rộng Phương thức $request->has(‘name’); $request->input(‘id’); $request->input(‘products.0.name’); $request->input(‘user.name’); $request->all(); $request->only(‘age’); $request->except(‘age’); Chức Kiểm tra tham số name có tồn không Nhận liệu từ thẻ Nhận liệu từ mảng Nhận liệu từ JSON dạng mảng Nhận hết liệu, lưu thành dạng mảng Chỉ nhận tham số age Nhận tất tham số ngoại trừ tham số age Sử dụng Cookie với request response Cài đặt Route //gọi hàm đặt Cookie Route::get('setCookie','MyController@setCookie'); //gọi hàm hiển thị Cookie Trung Tâm Đào Tạo Tin Học Khoa Phạm Nhận liệu bên Controller use Illuminate\Http\Request; use Illuminate\Http\Response; class MyController extends Controller { Làm việc với Database Schema Migrate Seed Query Builder Eloquent - Model Liên kết liệu Laravel Kết nối với sở liệu laravel Mở file env DB_HOST=localhost DB_DATABASE= Ten CSDL DB_USERNAME= Ten nguoi dung DB_PASSWORD= Mat khau Schema 1.1 Tạo bảng Schema::create('SanPham', function ($table) { $table->increments('id'); //Tự tăng, khóa $table->string('TenSanPham'); //Kiểu chuỗi $table->integer('Gia'); //Kiểu int $table->timestamps(); //Tự cập nhật thời gian }); Mở rộng Câu lệnh $table->primary(‘TenKhoaChinh’); $table->foreign(‘KhoaPhu’)->references(‘KhoaChinh’)->on(‘Bang’); $table->unique(‘TênCột’); $table->time(); $table->dateTime(); $table->date(); $table->text(); $table->float(); $table->boolean(); $table->rememberToken(); Trung Tâm Đào Tạo Tin Học Khoa Phạm Mô tả Tạo khóa Tạo khóa phụ Rang buộc unique Kiểu Kiểu ngày, Kiểu ngày Kiểu text Kiểu float Kiểu logic Tạo Token Điều kiện Câu lệnh ->nullable(); ->default($value); ->unsigned(); Mô tả Cho phép giá trị null Gán giá trị mặc định cho cột Đặt unsigned cho integer 1.2 Sửa bảng Câu lệnh $table->dropColumn('TenCot'); Schema::rename($from, $to); Mô tả Xóa cột bảng Đổi tên bảng 1.3 Xóa bảngss Câu lệnh Schema::drop('users'); Schema::dropIfExists('users'); Trung Tâm Đào Tạo Tin Học Khoa Phạm Mô tả Xóa bảng users Xóa bảng users bảng tồn Migrate Migrate dùng để tạo lên cấu trúc bảng sở liệu Ta sử dụng migrate để tạo bảng back up, restore lại theo ý muốn Các file migrate lưu database/migrations/ Sử dụng migrate với cửa sổ cmd php artisan make:migration TenMigrate php artisan migrate php artisan migrate:rollback php artisan migrate:reset Tạo file migrate với artisan Thực thi file migrate Hủy bỏ việc thực thi migrate trước Hủy bỏ hết công việc migrate Option create=TenBang table=TenBang Trung Tâm Đào Tạo Tin Học Khoa Phạm Migrate tạo bảng Migrate chỉnh sửa bảng Cấu trúc migration use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateTable extends Migration { public function up() { //đoạn lệnh thực migrate } public function down() { //đoạn lệnh thực Rollback } } Tạo bảng với Schema public function up() { Schema::create('SanPham', function (Blueprint $table) { $table->increments('id'); //Tự tăng, khóa $table->string('TenSanPham'); //Kiểu chuỗi $table->integer('Gia'); //Kiểu int $table->timestamps(); //Tự cập nhật thời gian }); } Trung Tâm Đào Tạo Tin Học Khoa Phạm Seed Seed dữ liệu mẫu, giúp quản lý liệu bảng cách thuận tiện, dễ dàng khôi phục lại cần thiết Các file seed lưu thư mục database/seeds/ Tạo liệu mẫu Seed use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder { public function run() { DB::table('users')->insert([ 'name' => str_random(10), 'email' => str_random(10).'@gmail.com', 'password' => bcrypt('secret'), ]); } } Thực thi Seed Mở cửa sổ cmd : php artisan db:seed Query Builder Có tác dụng thay cho câu lệnh truy vấn thông thường phương lớp DB Ví dụ : $users = DB::table('users')->get(); lấy toàn liệu bảng users lưu vào $users Lệnh tương đương với lệnh truy vấn thông thường : SELECT * FROM users Các lệnh truy vấn Lệnh truy vấn DB::table(‘users’) get() first() value(‘tên cột’) Mô tả Chọn bảng sở liệu Lấy liệu bảng Lấy dòng liệu từ kết truy vấn Trả liệu cột khai báo select(‘tên cột 1’) Chọn tên cột cần truy vấn addSelect(‘tên cột’) Thêm cột vào truy vấn trước với addSelect() Trung Tâm Đào Tạo Tin Học Khoa Phạm Ví dụ DB::table('users')->get(); DB::table('users')->get(); DB::table('users')-> where('name', 'John')->first(); DB::table('users')-> where('name', 'Joh')-> value('email'); DB::table('users')-> select(‘name’, ‘email’)->get(); $query = DB::table(‘users’) ->select('name'); $users = $query-> addSelect('age')->get(); DB::raw(‘Truy vấn’) Thêm lệnh truy vấn vào select() join('bảng liên kết', ‘cột liên kết 1’, ‘điều kiện’, ‘cột liên kết 2’) Lệnh Join bảng truy vấn where(‘cột 1’, ‘điều kiện’ , giá trị ) orwhere(‘cột 1’, ‘điều kiện’ , giá trị ) orderBy(‘tên cột’, ‘điều kiện’) groupBy('tên cột')-> having(điều kiện) Điều kiện where skip(vị trí)-> take(số lượng) avg('tên cột'); Giới hạn kết truy vấn Tương đương với LIMIT Lấy giá trị trung bình max('price'); count(); Lấy giá trị max Lệnh đếm Điều kiện Lệnh orderBy Lệnh groupBy DB::table('users')-> select( DB::raw('count(*) as userCount, status') ) DB::table('users')-> join('contacts', 'users.id', '=', 'contacts.user_id')-> select('contacts.phone')->get(); DB::table('users')-> where('votes', '=', 100)->get(); DB::table('users')-> where('votes', '=', 100)-> orwhere(‘age’, ‘>=’, ‘18’)->get(); DB::table('users')-> orderBy('name', 'desc')->get(); DB::table('users')-> groupBy('account_id')-> having('account_id', '>', 100)->get(); DB::table('users')->skip(10)->take(5) ->get(); DB::table('orders')-> where('finalized', 1)->avg('price'); DB::table('orders')->max('price'); DB::table('users')->count(); Lệnh update Lệnh truy vấn update(['tên cột' => giá trị]); Mô tả Lệnh update increment('tên cột',giá trị) decrement('tên cột',giá trị) Tăng/giảm giá trị cột Ví dụ DB::table('users')->where('id', 1)-> update(['votes' => 1]); DB::table('users')-> increment('votes',4); Lệnh insert Lệnh truy vấn insert([ mảng ghi ]); Mô tả Lệnh insert Trung Tâm Đào Tạo Tin Học Khoa Phạm Ví dụ DB::table('users')->insert( ['email' => 'john@example.com', 'votes' => 0] ); Lệnh delete Lệnh truy vấn delete(); truncate(); Mô tả Xóa liệu Xóa tất liệu bảng đặt số tự tăng Ví dụ DB::table('users')->where('votes', '