2015-06-16 13 views
8

Diese Zeile in routes.php funktioniert:Laravel 5: Umleiten von woes

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

Also ich kommentieren Sie sie aus und versuchen Sie dies:. Funktioniert nicht, wenn der Benutzer angemeldet ist, wird er nicht in den Controller umleiten Maßnahmen, die in dem oben genannten Code funktioniert:

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

Fehler:

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

Aber die Steuerung und das Verfahren ist klar ly dort. Offensichtlich mache ich etwas falsch.

+0

Können Sie "/" vor faq versuchen setzen. So etwas wie Route :: get ('/ faq'). – Michel

+1

nicht auf Authentifizierung in Ihrer Route überprüfen. Verwenden Sie stattdessen Middlewares für Ihre Controller-Aktion. – Salar

Antwort

6

Sie versuchen, etwas innerhalb einer Routendefinition selbst zu routen. So funktioniert es nicht.

Es gibt ein paar Möglichkeiten, wie Sie das erreichen können, was Sie erreichen möchten. Es gibt Pros/Cons für jeden - aber sie würden alle funktionieren.

Im Allgemeinen ist der beste Weg, einige Auth middleware on your route zu verwenden. Laravel 5 includes this out of the box:

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

So muss der Benutzer die FAQ zugreifen angemeldet werden.

Eine weitere Option ist Controller Middleware zu tun:

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

dann in Ihrem Homecontroller:

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

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

Danke das hat sehr gut funktioniert. (Route :: Gruppe) Ansatz – JasonGenX