Hi các bạn, bài tiếp theo là: PHP Laravel Redirect cơ bản nhé
Như các bạn đã biết, khi ta làm xong 1 điều gì, việc quan trọng là fải redirect về đâu, ra sao
Nên tính năng Redirect của Laravel sẽ giúp đỡ ta về điều này
Mình bắt đầu luôn nhé 😀
Mục lục – PHP Laravel Redirect:
- Redirect cơ bản
- Redirect với thông tin trả về
- Redirect với named route
1/ Redirect cơ bản
Về cơ bản, Laravel cung cấp cho chúng ta hàm redirect và class Redirect (2 cái khác nhau nhé)
Nhưng bản thân mình thấy thì hàm redirect chúng ta xài khá là đủ rồi.
Để sử dụng hàm redirect, rất đơn giản như sau:
return redirect('admin/login');
Có nghĩa là: redirect (đường dẫn trả về); nhé
Lưu ý: khi xài redirect thì ta fải return nhé, cũng như return trả về view ấy. Chứ ta gọi hàm bình thường là nó ko trở về đâu
Chúng ta cũng có thể redirect về trang trước như sau:
return redirect()->back();
Dùng method back() nhé 😀
Redirect cơ bản dễ fải ko nào 😀
Ngoài ra, nếu trang trc đó chúng ta có post gì và ko muốn mất các info đã nhập, ta sẽ sử dụng ->withInput()
return redirect()->back()->withInput();
2/ Redirect kèm thông tin trả về
Đây là một trong những cái hay của Laravel redirect, các bạn có thể trả về lỗi và xuất ra bên view, hoặc là dòng thông báo nào đó 😀
Redirect với thông báo riêng
Với cách redirect này, ta có thể set mặc định thông báo nào đó và xuất ra bên view cho người xem thấy.
Ta sẽ dùng method with(tên_session, nội dung) để redirect về
Ví dụ khi redirect một thông báo thành công:
return redirect('user/register')->with('success', 'Đăng ký thành công');
Ở view, chúng ta sẽ kiểm tra và xuất thông báo như sau:
@if (session('success')) <div class="alert alert-success"> <p>{{ session('success') }}</p> </div> @endif
Chỉ với hảm session(tên_session) bên view thôi, chúng ta có thể xuất ra thông báo của riêng mình rồi 😀
Redirect với thông báo lỗi
Ở một số phương thức khi ta sử dụng có thể nó sẽ báo lỗi, thì chúng ta cũng có thể trả về lỗi đó cho ng` dùng xem
Vd như khi sử dụng Validation của Laravel(Sau bài Request, mình sẽ viết bài này), khi valid sai nó sẽ báo 1 list lỗi cho mình
Vd Validation và return về lỗi nhé(mình sẽ viết bài Validation này sau):
$valid = Validator::make($post, $rules); if ($valid->fails()) { return redirect('user/login')->withErrors($valid); } else { // do something }
Và khi đó ta đã bắt dc 1 list lỗi, để hiển thị lỗi bên view thì như sau:
@if (count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
Khi ta dùng withErrors, mặc định biến bên view ta xài sẽ là $errors nhé
Như bên trên thì mình kiễm tra xem có $errors nào ko, có thì foreach và xuất ra toàn bộ.
Cái này sẽ theo ta trong quá trình POST hơi bị nhiều ấy các bạn :D, mình sẽ nói rõ hơn ở các bài sau.
3/ Redirect với Named Route
Với route đã dc đặt tên, ta cũng có thể redirect với hàm route hỗ trợ như sau:
return redirect()->route('tenRouteDaDcDat');
Ví dụ với 1 route như sau cần truyền vào giá trị:
Route::get('user/{id}', '[email protected]')->name('userProfile');
Như route này, để xem dc thì ta phải truyền $id vào route, đơn giản thôi, hàm route cũng đã hỗ trợ full cho ta điều này:
// Cách 1 return redirect() ->route('userProfile', [$id]); // Cách 2 return redirect() ->route('userProfile', [ 'id' => $id ]);
Ta có 2 cách truyền dữ liệu vào named route để lấy link và redirect ra như trên 😀
Đối với cách 1, nếu giá trị nào dc gọi trước có nghĩa gán trước, vd ta có route như sau:
search/{keyword}/{page}
Nếu ta chỉ truyền [$id] như trên thì nó sẽ ra search/$id/(rỗng) và sẽ sai nhé, còn nếu ta truyền [$keyword, $id] thì sẽ đúng.
Đó là những điều cơ bản của redirect nhé 😀
Bài tiếp theo: PHP Laravel Request
Tìm hiểu thêm ở: https://laravel.com/docs/5.0/responses#redirects
Các bài học cũ:
Cám ơn các bạn đã quan tâm!