如何在控制器中创建适用于控制器中所有其他方法的方法?

时间:2017-01-14 13:02:54

标签: php laravel laravel-5

我的from odo import odo odo('mssql+pyodbc://user:pass@mydsn::tablename','myfile.csv') 中有以下代码:

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'); } 中的所有其他方法,我该怎么做?

2 个答案:

答案 0 :(得分: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');
}

答案 1 :(得分:1)

在方法中包装你想要的东西

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

然后从其他方法称之为

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