Phiên được sử dụng để lưu trữ thông tin về người dùng trên các yêu cầu. Laravel cung cấp nhiều trình điều khiển khác nhau như tệp, cookie, apc, mảng, Memcached, Redis và cơ sở dữ liệu để xử lý dữ liệu phiên. Theo mặc định, trình điều khiển tệp được sử dụng vì nó nhẹ. Phiên có thể được cấu hình trong tệp được lưu trữ tại config / session.php .
Truy cập dữ liệu phiên
Để truy cập dữ liệu phiên, chúng tôi cần một phiên bản có thể được truy cập thông qua yêu cầu HTTP. Sau khi nhận được phiên bản, chúng ta có thể sử dụng phương thức get () , phương thức này sẽ sử dụng một đối số, “key” , để lấy dữ liệu phiên.
$value = $request->session()->get('key');
Bạn có thể sử dụng phương thức all () để lấy tất cả dữ liệu phiên thay vì phương thức get () .
Lưu trữ dữ liệu phiên
Dữ liệu có thể được lưu trữ trong phiên sử dụng phương thức put () . Phương thức put () sẽ nhận hai đối số, “khóa” và “giá trị” .
$request->session()->put('key', 'value');
Xóa dữ liệu phiên
Phương thức quên () được sử dụng để xóa một mục khỏi phiên. Phương thức này sẽ lấy “key” làm đối số.
$request->session()->forget('key');
Sử dụng phương thức flush () thay vì phương thức quên () để xóa tất cả dữ liệu phiên. Sử dụng phương thức pull () để lấy dữ liệu từ phiên và xóa nó sau đó. Phương thức pull () cũng sẽ lấy khóa làm đối số. Sự khác biệt giữa phương thức quên () và pull () là phương thức quên () sẽ không trả về giá trị của phiên và phương thức pull () sẽ trả về và xóa giá trị đó khỏi phiên.
Thí dụ
Bước 1 – Tạo một bộ điều khiển có tên SessionController bằng cách thực hiện lệnh sau.
php artisan make:controller SessionController --plain
Bước 2 – Sau khi thực hiện thành công, bạn sẽ nhận được kết quả sau:
Bước 3 – Sao chép mã sau vào tệp tại
app / Http / Controllers / SessionController.php.app / Http / Controllers / SessionController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class SessionController extends Controller {
public function accessSessionData(Request $request) {
if($request->session()->has('my_name'))
echo $request->session()->get('my_name');
else
echo 'No data in the session';
}
public function storeSessionData(Request $request) {
$request->session()->put('my_name','Virat Gandhi');
echo "Data has been added to session";
}
public function deleteSessionData(Request $request) {
$request->session()->forget('my_name');
echo "Data has been removed from session.";
}
}
Bước 4 – Thêm các dòng sau vào tệp app / Http / route.php .
app / Http / route.php
Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');
Bước 5 – Truy cập URL sau để thiết lập dữ liệu trong phiên .
http://localhost:8000/session/set
Bước 6 – Đầu ra sẽ xuất hiện như trong hình sau.
Bước 7 – Truy cập URL sau để lấy dữ liệu từ phiên .
http://localhost:8000/session/get
Bước 8 – Đầu ra sẽ xuất hiện như trong hình sau.
Bước 9 – Truy cập URL sau để xóa dữ liệu phiên .
http://localhost:8000/session/remove
Bước 10 – Bạn sẽ thấy một thông báo như trong hình sau.
Laravel – Validation Xác thực
Xác thực là khía cạnh quan trọng nhất trong khi thiết kế một ứng dụng. Nó xác nhận dữ liệu đến. Theo mặc định, lớp bộ điều khiển cơ sở sử dụng đặc điểm ValidatesRequests cung cấp một phương pháp thuận tiện để xác thực các yêu cầu HTTP đến với nhiều quy tắc xác thực mạnh mẽ.
Quy tắc xác thực có sẵn trong Laravel
Laravel sẽ luôn kiểm tra các lỗi trong dữ liệu phiên và tự động liên kết chúng với chế độ xem nếu chúng có sẵn. Vì vậy, điều quan trọng cần lưu ý là biến $ error sẽ luôn có sẵn trong tất cả các chế độ xem của bạn đối với mọi yêu cầu, cho phép bạn thuận tiện giả định rằng biến $ error luôn được xác định và có thể được sử dụng một cách an toàn. Bảng sau đây hiển thị tất cả các quy tắc xác thực có sẵn trong Laravel.
Quy tắc xác thực có sẵn trong Laravel | ||
Đã được chấp nhận | URL hoạt động | Sau (Ngày) |
Alpha | Dấu gạch ngang Alpha | Alpha Numeric |
Mảng | Trước (Ngày) | Giữa |
Boolean | Đã xác nhận | Ngày |
Định dạng ngày tháng | Khác nhau | Chữ số |
Chữ số giữa | Tồn tại (Cơ sở dữ liệu) | |
Hình ảnh (Tệp) | Trong | Số nguyên |
Địa chỉ IP | JSON | Max |
Các loại MIME (Tệp) | Min | Không có trong |
Số | Biểu hiện thông thường | Cần thiết |
Bắt buộc Nếu | Bắt buộc trừ khi | Yêu cầu Với |
Bắt buộc với tất cả | Bắt buộc Không có | Bắt buộc Không có Tất cả |
Tương tự | Kích thước | Chuỗi |
Múi giờ | Duy nhất (Cơ sở dữ liệu) | URL |
Biến $ error sẽ là một phiên bản của Illuminate \ Support \ MessageBag . Thông báo lỗi có thể được hiển thị trong tệp xem bằng cách thêm mã như hình dưới đây.
@if (count($errors) > 0)
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Thí dụ
Bước 1 – Tạo một bộ điều khiển có tên là ValidationController bằng cách thực hiện lệnh sau.
php artisan make:controller ValidationController --plain
Bước 2 – Sau khi thực hiện thành công, bạn sẽ nhận được kết quả sau:
Bước 3 – Sao chép mã sau vào
tệp app / Http / Controllers / ValidationController.php .app / Http / Controllers / ValidationController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ValidationController extends Controller {
public function showform() {
return view('login');
}
public function validateform(Request $request) {
print_r($request->all());
$this->validate($request,[
'username'=>'required|max:8',
'password'=>'required'
]);
}
}
Bước 4 – Tạo một tệp xem có tên là resource / views / login.blade.php và sao chép đoạn mã sau vào tệp đó.
resource / views / login.blade.php
<html>
<head>
<title>Login Form</title>
</head>
<body>
@if (count($errors) > 0)
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<?php
echo Form::open(array('url'=>'/validation'));
?>
<table border = '1'>
<tr>
<td align = 'center' colspan = '2'>Login</td>
</tr>
<tr>
<td>Username</td>
<td><?php echo Form::text('username'); ?></td>
</tr>
<tr>
<td>Password</td>
<td><?php echo Form::password('password'); ?></td>
</tr>
<tr>
<td align = 'center' colspan = '2'
><?php echo Form::submit('Login'); ? ></td>
</tr>
</table>
<?php
echo Form::close();
?>
</body>
</html>
Bước 5 – Thêm các dòng sau vào app / Http / route.php .
app / Http / route.php
Route::get('/validation','ValidationController@showform');
Route::post('/validation','ValidationController@validateform');
Bước 6 – Truy cập URL sau để kiểm tra xác thực.
http://localhost:8000/validation
Bước 7 – Nhấp vào nút “Đăng nhập” mà không cần nhập bất kỳ thứ gì vào trường văn bản. Đầu ra sẽ như trong hình sau.