Cơ bản về Laravel phần 3

Cơ bản về laravel phần 3 hướng dẫn sử dụng session trong Laravel và một số helper hữu dụng trong Laravel như array, string, miscellaneous…


Mục lục


Session trong Laravel

Session là nơi lưu thông tin của riêng người dùng trên server. Laravel hỗ trợ lưu session vào file (mặc định), database, memcache,  array…

Có 2 cách sử dụng session, đó là dùng session helper hoặc dùng đối tượng Request

Lưu dữ liệu vào session

Để lưu 1 biến vào session, bạn dùng 1 trong 2 cách sau

  • Cách 1: Dùng đối tượng request :  
    $request->session()->put(‘key’, ‘value’);
  • Cách 2: Dùng hảm session helper:  
    session([‘key’ => ‘value’]);

Lấy giá trị từ session

Đế lấ giá trị 1 biến trong session, cũng có thể dùng 2 cách

  • Cách 1:  Dùng đối tượng request
    $value = $request->session()->get(‘key’, ‘default’);
  • Cách 2:  Dùng session helper
    $value = session(‘key’);

Ví dụ:

Route::get("/test1", function(){
    session(['hoten' => 'Văn Tèo', 'role'=> 1]);
 });
 Route::get("/test2", function(){
    echo session('hoten') ;
    echo session('username', 'Chưa đăng nhập') ;
 });

Ví dụ 2:

use Illuminate\Http\Request;
Route::get("/test1", function(Request $request){
    $request->session()->put('hoten', 'Văn Tèo');
});
Route::get("/test2", function(Request $request){
    $un = $request->session()->get('un', 'Chưa đăng nhập');
    $ht = $request->session()->get('hoten');
    echo $ht, " ", $un;
});

Xác định key có tồn tại trong session không

Để xác định có 1 biến trong session hay không, dùng hàm has() hoặc exitst()

Route::get("/test2", function(Request $request){
    if ($request->session()->has('hoten')) {
        echo "Có hoten";
    }
    else {
        echo "Không có";
    }
});

Lấy giá trị 1 biến từ session và xóa luôn

use Illuminate\Http\Request;
Route::get("/test1", function(Request $request){
    $request->session()->put('hoten', 'Văn Tèo1');
});
Route::get("/test2", function(Request $request){
   $ht = $request->session()->pull('hoten','Quý khách');
   echo $ht;
});

Chạy test1 1 lần, test2 2 lần sẽ thấy hiện quý khách

Flash data

Là các item trong session chỉ dùng cho request kế tiếp, tự động bị xóa ở các request sau đó.

use Illuminate\Http\Request;
Route::get("/test1", function(Request $request){
    $request->session()->flash('thongbao', 'Đã xóa thành công');
});
Route::get("/test2", function(Request $request){
   $tb = $request->session()->get('thongbao');
   echo $tb;
});

Chạy test1 1 lần, kế tiếp chạy test2 sẽ thấy thông báo, chạy test2 lần nữa sẽ không còn thấy

Xóa dữ liệu trong session

Dùng hàm forget() để xóa 1 biến, hoặc dùng flush() để xóa hết.

use Illuminate\Http\Request;
Route::get("/test1", function(Request $request){
    $request->session()->put('un', 'teo');
    $request->session()->put('ht', 'Văn Tèo');
    $request->session()->put('email', 'teonv@gmail.com');
});
Route::get("/test2", function(Request $request){
   $arr = $request->session()->all(); //hiện hết 3 biến session
   echo "<pre>"; print_r($arr);

   $request->session()->forget('email');//xóa email
   print_r($request->session()->all() );//chỉ còn un,ht
   
   $request->session()->flush(); //xóa hết
   print_r($request->session()->all() );//không còn biến nào
});

Các helper thường dùng

Array Helper trong laravel

Array helper chứa các hàm xử lý array rất hay.

Array::random(): lấy 1 phần tử ngẫu nhiên trong mảng

use Illuminate\Support\Arr;
Route::get("/test1", function(){
    $arr = [1, 2, 3, 4, 5];
    echo $r = Arr::random($arr); // 2 
});

Array::Sort() : Hàm này giúp sắp xếp mảng theo các giá trị của phần tử

use Illuminate\Support\Arr;
Route::get("/test1", function(){
    $arr = ['Vui', 'Cười', 'An','Nhẹ'];    
    $sorted = Arr::sort($arr);
    print_r($sorted);//[An, Cười , Nhẹ , Vui]
});
use Illuminate\Support\Arr;
Route::get("/test1", function(){
    $arr = ['Vui', 'Cười', 'An','Nhẹ'];    
    $sorted = Arr::sortDesc($arr);
    print_r($sorted);//[Vui, Nhẹ, Cười, An]
});

Array::add() : Thêm cặp name/value vào mảng nếu key không có hoặc là null

use Illuminate\Support\Arr;
Route::get("/test1", function(){
    $array = Arr::add(['name' => 'Desk'], 'price', 100);
     // ['name' => 'Desk', 'price' => 100]   
    $array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);
    // ['name' => 'Desk', 'price' => 100]
});

Array::exitst() : đây là hàm dùng để kiểm tra xem 1 biến có tồn tại trong mảng không

use Illuminate\Support\Arr;
Route::get("/test1", function(){
  $arr = ['name' => 'Tèo', 'age' => 17];
  $kq = Arr::exists($arr, 'name'); // true
  $kq = Arr::exists($arr, 'salary'); // false
});

Array::Last() Lấy giá trị cuối của mảng thõa điều kiện

use Illuminate\Support\Arr;
Route::get("/test1", function(){
    $arr = [100, 200, 300, 110];
    $last = Arr::last($arr, function ($value, $key) {
         return $value >= 150;
    }); // 300
});

Array::First() Lấy giá trị đầu tiên thõa điều kiện

use Illuminate\Support\Arr;
Route::get("/test1", function(){
  $art = [100, 200, 300];
  $first = Arr::first($arr, function ($value, $key) {
    return $value >= 150;
  }); // 200
});

Để xem thêm các hàm khác trong Array helper, bạn vào link này: https://laravel.com/docs/10.x/helpers#arrays-and-objects-method-list

String helper trong laravel

String helper chứa các hàm xử lý chuỗi. Sau đây là một vài hàm thường dùng trong string helper.

String::slug() Đây là hàm rất hay, nó giúp bạn tạo ra chuỗi không dấu khi đưa cho nó 1 chuỗi có dấu.

use Illuminate\Support\Str;
Route::get("/test1", function(){
    $slug = Str::slug('hãY  yêU nhAu đi ', '-');
    echo $slug;//hay-yeu-nhau-di
});

String::startWitdth() Xác định 1 chuỗi có bắt đầu bởi 1 giá trị chỉ định hay không

use Illuminate\Support\Str;
Route::get("/test1", function(){
   $kq = Str::startsWith('PS12345', 'PS'); // true
});

String::endWidth() Xác định 1 chuỗi có kết thúc bởi 1 giá trị nào đó hay không.

use Illuminate\Support\Str;
Route::get("/test1", function(){
    $kq = Str::endsWith('longnv.name.vn', 'vn');// true
});

String::random() Phát sinh chuỗi ngẫu nhiên theo độ dài cho trước

use Illuminate\Support\Str;
Route::get("/test1", function(){
    $passMoi = Str::random(12);
    echo $passMoi; //qmtHPYDwgv4A
});

String::padLeft() Thêm chuỗi vào bên trái 1 chuỗi mẹ để cho đủ độ dài

use Illuminate\Support\Str;
Route::get("/test1", function(){
    echo $p = Str::padLeft('1256', 6, '0');//001256
});

String::substr() lấy chuỗi con trong chuỗi mẹ, bắt đầu từ vị trí , với độ dài chỉ định

use Illuminate\Support\Str;
Route::get("/test1", function(){
    echo $kq = Str::substr('Con kênh xanh xanh', 4, 9);
    //kênh xanh
});

Cần xem thêm các hàm khác trong String helper, mời bạn vào link này: https://laravel.com/docs/10.x/helpers#strings-method-list

URL Helper

URL helper chứa các hàm xử lý liên quan đến url

URL::route() : trả về url của 1 đường route theo tên bạn chỉ ra

Route::get("/test1", function(){
    $url1 = route('login');
    $url2 = route('sp', ['id' => 1]);
    echo $url1 , "<br>"; //http://localhost:8000/dangnhap
    echo $url2;  //http://localhost:8000/sp/1
});

URL::url() Trả vê url của đường route cung cấp hoặc dùng không tham số  để lấy url hiện hành

Route::get("/test1", function(){
    $url1 = url()->current();
    echo $url1 , "<br>"; //http://localhost:8000/test1
});

Xem thêm về url helper của Laravel tại đây: https://laravel.com/docs/10.x/helpers#urls-method-list

Miscellaneous helper trong laravel

Miscellaneous helper là những hàm hữu dụng khác.

now() : trả về thời điểm hiện hành

Route::get("/test1", function(){
    $n = now();
    echo $n ; //2023-02-15 00:32:33
});

today() trả về ngày hiện hành

Route::get("/test1", function(){
    $n = today();
    echo $n ; //2023-02-15 00:00:00
});

dd() xuất text và dừng laravel ngay lập tức

Route::get("/test1", function(){
    dd('Tạm biệt');
    echo "Xin chào"; //không chạy
});

redirect() : chuyển user sang trang khác, theo path hoặc route name đều được.

Route::get("/test1", function(){
    //return redirect('/');
    return redirect()->route('login');
});

bcrypt() : Mã hóa 1 chuỗi theo giải thuật bcrypt

Route::get("/test1", function(){
    $pass="abc"; $pass_mahoa = bcrypt($pass);
    echo $pass_mahoa;
    //$2y$10$LOpEwK1T3caAmWc738BPHef4d5fgkrVswODteaXdfV.hfnGFwRMlq
});

Bài cơ bản về laravel phần 3 đến đây thôi. 3 bài cơ bản về Larvel cũng khác đủ để bạn làm dự án rồi đó. Chiến ngon nhé. 🙂