是否有可能加载一个需要用户id的视图,而不需要在Laravel 5.1的URI中确定它?


Is it possible to load a view that requires a user id, without determining it in the URI in Laravel 5.1

我继续我的冒险与Laravel 5.1。我有一个小项目,我正在工作,我正在寻找一个很好的方式来加载一个用户的壁虎理想的没有用户id在URI。

这是我当前的URI,它是这样工作的:

Route::get('gecko/{user_id}/{name}', 'GeckoController@show');

正如你所看到的,我在URI中持有用户id,然后我正在查询它以找到正确的壁虎。如下所示:

public function show($user_id, $name)
{
    $name = str_replace('-', ' ', $name);
    $gecko = Gecko::where(compact('user_id', 'name'))->first();
    return view('gecko.show', compact('gecko'));
}

所以要让这个工作,我会做project.dev/gecko/1/Zilly -它工作,但有用户ID在那里有点糟糕。我认为拥有User ID很重要,以防有多个用户拥有相同名称的壁虎。

任何帮助都是非常感激的,如果你需要任何额外的代码,请告诉我:)

安迪

如果您想使用username而不是user_id:

路线:

Route::get('gecko/{username}/{geckoname}', 'GeckoController@show');

控制器:

public function show($username, $geckoname) {
    $user_id = User::where('username', $username)->first()->id;
    $geckoname = str_replace('-', ' ', $geckoname);
    $gecko = Gecko::where(compact('user_id', 'geckoname'))->first();
    return view('gecko.show', compact('gecko'));
}

如果用户身份验证,您可以使用Auth::user()->id,并且您应该只添加gecko id。

例如:

路线:

Route::get('gecko/{gecko_id}', 'GeckoController@show');

控制器:

public function show($id) {    
    $gecko = Gecko::find($id)->where('user_id', Auth::user()->id)->first();
    return view('gecko.show', compact('gecko'));
}

如果您想使用geckoname:

路线:

Route::get('gecko/{geckoname}', 'GeckoController@show');

控制器:

public function show($geckoname) {   
    $gecko_id= Gecko::where('geckoname',$geckoname)->first()->id; 
    $gecko = Gecko::find($gecko_id)->where('user_id', Auth::user()->id)->first();
    return view('gecko.show', compact('gecko'));
}