Làm thứ làm cho Laravel Request của bạn thú vị hơn

PHP Laravel Redirect cơ bản

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:

  1. Redirect cơ bản
  2. Redirect với thông tin trả về
  3. 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}', 'UserProfileController@profile')->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!

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Bình luận qua Facebook