2017-01-14 2 views
2

У меня есть следующий код в моем adminController:Как создать метод в контроллере, который применяется ко всем другим методам в контроллере?

public function index() { 

    if (!(Auth::check())) { 
     return Redirect::to('login'); 
    }  

    $tags = DB::table('Tags')->get(); 
    /* convert Object to array */ 
    $tagsArray = array(); 
    foreach($tags as $tag) { 
     $tagsArray[$tag->tag] = $tag->tag; 
    } 
    $tagsArray = json_decode(json_encode($tagsArray) , TRUE); 
    return view('admin.index')->with('tags' , $tagsArray); 
} 

У меня есть следующие два шага, чтобы проверить, если пользователь вошел в систему, если ГЭС не то ему будет предложено войти в систему:

if (!(Auth::check())) { 
      return Redirect::to('login'); 
} 

На самом деле я хотел бы сделать эти два шага в методе, а затем применить этот метод ко всем другим методам в adminController. Как мне это сделать?

ответ

1

Wrap, что вы хотите в метод

public function authCheck() { 
    if (!(Auth::check())) { 
     return Redirect::to('login'); 
    } 
} 

затем из других методов называют это как

public function someOtherMethod() { 
    $this->authCheck(); 
    // your code.... 
} 
2

Вы должны действительно использовать auth или выборочную промежуточное программное обеспечение для этого:

Route::resource('admin', 'adminController)->middleware('auth'); 

Или используйте middleware group:

Route::group(['middleware' => ['auth']], function() { 
    Route::resource('admin', 'adminController); 
}); 

Или определить middleware in a constructor:

public function __construct() 
{ 
    $this->middleware('auth'); 
} 
+0

спасибо, я хотел что-то вроде того, что Gayan отправил хотя, спасибо за хорошее объяснение :). + 1 –

Смежные вопросы