2015-06-16 27 views
8

dòng này hoạt động trong routes.php:Laravel 5: chuyển hướng tai ương

Route::get('faq', '[email protected]'); 

Vì vậy, tôi nhận xét nó ra và thử điều này:. Không làm việc khi người dùng đăng nhập Nó sẽ không chuyển hướng vào bộ điều khiển hành động mà làm việc trong các mã nói trên:

Route::get('faq', function() 
{ 
    if (Auth::check()) 
    { 
     return redirect()->action('[email protected]'); 
    } 
    else 
    { 
     return Redirect::to('/'); 
    } 
}); 

Lỗi:

New exception in xxxx.xx 
InvalidArgumentException · GET /faq 
Action App\Http\Controllers\[email protected] not defined. 

Nhưng bộ điều khiển và phương pháp rõ ràng ly ở đó. Rõ ràng tôi đang làm điều gì sai.

+0

Bạn có thể thử đặt "/" trước khi faq. Một cái gì đó như Route :: get ('/ faq'). – Michel

+1

không kiểm tra xác thực trong Tuyến đường của bạn. thay vì sử dụng phần mềm trung gian cho hành động điều khiển của bạn. – Salar

Trả lời

6

Bạn đang cố định tuyến gì đó trong chính định nghĩa tuyến đường. Đó không phải là cách nó hoạt động.

Có một vài cách bạn có thể làm những gì bạn muốn đạt được. Có ưu/khuyết điểm cho mỗi - nhưng tất cả chúng đều hoạt động.

Nói chung cách tốt nhất là sử dụng một số Auth middleware on your route. Laravel 5 includes this out of the box:

Route::group(['middleware' => 'auth'], function() { 
    Route::get('faq', '[email protected]'); 
}); 

Vì vậy, người dùng phải đăng nhập để truy cập vào Câu hỏi thường gặp.

Một lựa chọn khác là để làm Controller Middleware:

Route::get('faq', '[email protected]'); 

sau đó trong HomeController bạn:

class HomeController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('auth', ['only' => ['faq']]); 
    } 

    public function faq() 
    {  
     // Only logged in users can see this 
    } 
} 
+0

Cảm ơn bạn đã làm việc rất tốt. (Cách tiếp cận :: Nhóm) – JasonGenX

Các vấn đề liên quan