Làm cách nào để kiểm tra chuyển hướng trở lại trong Laravel?

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

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

Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
7 hoặc mặt tiền
Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
8

Trong ảnh này, tất cả các ví dụ sẽ sử dụng trình trợ giúp

Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
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

route($route, $parameters = [], $status = 302, $headers = [])
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

route($route, $parameters = [], $status = 302, $headers = [])
2 như sau

to($path, $status = 302, $headers = [], $secure = null)

Đâ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::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});

route($route, $parameters = [], $status = 302, $headers = []) 3

route($route, $parameters = [], $status = 302, $headers = [])
3 giống như phương pháp
route($route, $parameters = [], $status = 302, $headers = [])
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

route($route, $parameters = [], $status = 302, $headers = [])
6 chấp nhận một mảng tham số thứ hai có tên là
route($route, $parameters = [], $status = 302, $headers = [])
7có tất cả các tham số tuyến đường cho tuyến đường

Định nghĩa của phương thức

route($route, $parameters = [], $status = 302, $headers = [])
6 như sau

route($route, $parameters = [], $status = 302, $headers = [])

Đây là một ví dụ về cách chuyển hướng đến một bài đăng blog cụ thể

Route::get('/create-post', function () {
    return redirect()->route('view-post', ['id' => 27]);
});

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

route($route, $parameters = [], $status = 302, $headers = [])
2, như hình bên dưới

Route::get('/create-post', function () {
    return redirect()->to('/posts/27');
});

Route::get('/create-post', function () { return redirect()->route('view-post', ['id' => 27]); }); 0

Những lần khác, bạn có thể chỉ muốn đưa người dùng trở lại nơi họ đến.

Route::get('/create-post', function () {
    return redirect()->route('view-post', ['id' => 27]);
});
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

Route::get('/create-post', function () {
    return redirect()->route('view-post', ['id' => 27]);
});
2 như sau

back($status = 302, $headers = [], $fallback = false)

Đây là một ví dụ về cách chuyển hướng trở lại trang trước

Route::get('/create-post', function () {
    return redirect()->back();
});

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 back();
});

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à

Route::get('/create-post', function () {
    return redirect()->route('view-post', ['id' => 27]);
});
4

Bạn có thể sử dụng phương pháp

Route::get('/create-post', function () {
    return redirect()->route('view-post', ['id' => 27]);
});
5 để chuyển hướng người dùng đến một đường dẫn có tên là
Route::get('/create-post', function () {
    return redirect()->route('view-post', ['id' => 27]);
});
4

Định nghĩa của phương thức

Route::get('/create-post', function () {
    return redirect()->route('view-post', ['id' => 27]);
});
5 như sau

home($status = 302)

Đây là một ví dụ về cách chuyển hướng đến trang chủ

Route::get('/create-post', function () {
    return redirect()->home();
});

Ví dụ này làm điều tương tự

Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
0

Route::get('/create-post', function () { if (!Auth::user()) { return redirect()->to('/login'); } }); 9

Không phải lúc nào bạn cũng phải sử dụng các phương pháp

route($route, $parameters = [], $status = 302, $headers = [])
2 hoặc
route($route, $parameters = [], $status = 302, $headers = [])
6. Bản thân trình trợ giúp
Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
7 có thể được sử dụng làm phím tắt

Dưới đây là một ví dụ trong đó trình trợ giúp

Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
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 đề
route($route, $parameters = [], $status = 302, $headers = [])
2

Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
1

Đặt tuyến đường để luôn chuyển hướng

Khi ứ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

Route::get('/create-post', function () {
    return redirect()->to('/posts/27');
});
4 luôn được chuyển hướng đến đường dẫn
Route::get('/create-post', function () {
    return redirect()->to('/posts/27');
});
5

Route::get('/create-post', function () {
    if (!Auth::user()) {
        return redirect()->to('/login');
    }
});
2

Route::get('/create-post', function () { return redirect()->to('/posts/27'); }); 6

Giả 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

Route::get('/create-post', function () {
    return redirect()->to('/posts/27');
});
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