Chuyển hướng là cần thiết khi người dùng truy cập các tuyến đường mà họ không được phép truy cập hoặc cố gắng thực hiện các hành động mà họ không được phép thực hiện Show
Laravel cung cấp hai cách phổ biến để xử lý chuyển hướng và đưa người dùng đến nơi họ nên đến Bạn có thể chuyển hướng với trình trợ giúp 7 hoặc mặt tiền 8Trong ảnh này, tất cả các ví dụ sẽ sử dụng trình trợ giúp 9 thay vì mặt tiền. Tuy nhiên, cả hai đều làm điều tương tựroute($route, $parameters = [], $status = 302, $headers = []) 0 0 đi vào đường dẫn được chuyển hướng đến; Bạn cũng có thể chuyển vào một mã trạng thái khác, các tiêu đề khác và thậm chí đặt sử dụng HTTP hay HTTPS Định nghĩa của phương thức 2 như sau
Đây là một ví dụ về cách chuyển hướng người dùng chưa được xác thực đến trang đăng nhập
route($route, $parameters = [], $status = 302, $headers = []) 3 3 giống như phương pháp 2 đã giải thích ở trên. Sự khác biệt duy nhất là nó đi theo một tuyến đường được đặt tên thay vì đường dẫn thôCho rằng các tham số tuyến đường không thể được viết trong tuyến đường khi sử dụng các tuyến đường được đặt tên, phương thức 6 chấp nhận một mảng tham số thứ hai có tên là 7có tất cả các tham số tuyến đường cho tuyến đườngĐịnh nghĩa của phương thức 6 như sau
Đây là một ví dụ về cách chuyển hướng đến một bài đăng blog cụ thể
Ví dụ này hoạt động theo cách tương tự như khi chúng ta sử dụng phương pháp 2, như hình bên dưới
Route::get('/create-post', function () { return redirect()->route('view-post', ['id' => 27]); }); 0Những lần khác, bạn có thể chỉ muốn đưa người dùng trở lại nơi họ đến. 0 tận dụng lợi thế của việc Laravel sử dụng phiên và sẽ luôn biết về trang đã xem trước đó của người dùngĐịnh nghĩa của phương pháp 2 như sau
Đây là một ví dụ về cách chuyển hướng trở lại trang trước
Ví dụ này có thể được viết lại để sử dụng một phím tắt, như hình bên dưới
Route::get('/create-post', function () { return redirect()->route('view-post', ['id' => 27]); }); 3Đôi khi (thường là sau khi xác thực), bạn sẽ muốn chuyển hướng người dùng đến trang tổng quan của họ, thường có tên là 4Bạn có thể sử dụng phương pháp 5 để chuyển hướng người dùng đến một đường dẫn có tên là 4Định nghĩa của phương thức 5 như sau
Đây là một ví dụ về cách chuyển hướng đến trang chủ
Ví dụ này làm điều tương tự 0Route::get('/create-post', function () { if (!Auth::user()) { return redirect()->to('/login'); } }); 9Không phải lúc nào bạn cũng phải sử dụng các phương pháp 2 hoặc 6. Bản thân trình trợ giúp 7 có thể được sử dụng làm phím tắtDưới đây là một ví dụ trong đó trình trợ giúp 7 được sử dụng để thực hiện chức năng tương tự như ví dụ đầu tiên trong tiêu đề 2 1Đặt tuyến đường để luôn chuyển hướngKhi ứng dụng được cập nhật, bạn có thể muốn thay đổi lộ trình vì người dùng sẽ quen với lộ trình hiện tại và bạn không muốn gặp sự cố Đây là một ví dụ trong đó đường dẫn 4 luôn được chuyển hướng đến đường dẫn 5 2Route::get('/create-post', function () { return redirect()->to('/posts/27'); }); 6Giả sử bạn muốn gửi dữ liệu từ tuyến hiện tại đến tuyến tiếp theo mà bạn muốn chuyển hướng đến Phương thức 7 có thể được kết nối với các phương thức khác để truyền dữ liệu nàyĐiều này đặc biệt hữu ích khi xử lý các biểu mẫu mà bạn muốn quay lại biểu mẫu nhưng có thông báo lỗi hoặc thành công Làm cách nào để chuyển hướng trở lại với laravel?Nếu bạn chỉ muốn chuyển hướng người dùng quay lại trang trước (ví dụ phổ biến nhất - là chuyển hướng quay lại trang biểu mẫu sau khi xác thực dữ liệu không thành công), bạn có thể sử dụng cách này. return redirect()->back();
Làm cách nào để chuyển hướng trở lại với lỗi trong laravel?Khi bạn cần chuyển hướng đến một trang nhưng bạn muốn hiển thị thông báo, bạn có thể sử dụng withError trong mã điều khiển. trả lại chuyển hướng. back()->withErrors(['msg', 'The Message']); Sau đó gọi thông báo lỗi trong chế độ xem của bạn . Bạn có thể sử dụng đèn flash thay thế.
Làm cách nào để chuyển hướng sau khi đăng nhập trong laravel?Theo mặc định, laravel sẽ chuyển hướng người dùng đến trang chủ như vậy. protected $redirectTo = '/home'; Để thay đổi hành vi mặc định đó, hãy thêm mã sau vào App/Http/Controllers/Auth/LoginController. php. Điều này sẽ chuyển hướng người dùng (sau khi đăng nhập) đến nơi bạn muốn.
Sự khác biệt giữa chế độ xem trả về và chuyển hướng trả về trong laravel là gì?Chế độ xem trả về không tạo yêu cầu mới, nó chỉ hiển thị chế độ xem mà không thay đổi URL trong thanh địa chỉ của trình duyệt. Trả về RedirectToAction tạo một yêu cầu mới và URL trong thanh địa chỉ của trình duyệt được cập nhật với URL được tạo bởi MVC |