laravel通过路由到' / user / {username}'来获取用户信息不工作

时间:2017-02-13 20:18:21

标签: php laravel lua-5.3

我是laravel的新手,我无法通过前往路线' user / {username}';

来获取用户信息

理论上它应该有效,这是我的路线:

Route::get('/user/{username}', function($username){
    $user = User::where('username',$username) -> first();
    if(isset($user['username'])){

        return redirect()->route('/user/'.$username, ['user' => $user]);

    }else{

        return redirect()->route('/user/'.$username, ['error' => 'This User Does Not Exist']);

    }
});

我在页面中执行了use App\User;因此它应该可以正常工作。我收到这个错误:
NotFoundHttpException in RouteCollection.php line 161:

感谢任何帮助,谢谢,如果您需要更多信息,请告诉我们。

3 个答案:

答案 0 :(得分:2)

重定向采用路由名称,而不是您要重定向到的路径。在您的代码中,为您的路线添加名称,如下所示:

Route::get('/user/{username}', function($username) {
    [...]
})->name('username');
// Here we call our route 'username'

现在你可以像这样重定向:

// Note that we call redirect with the name we just gave it, passing the username value forward
return redirect()->route('username', ['username' => $user]);

编辑:查看您的代码我并不完全了解您的目标。代码看起来会创建一个重定向循环?看起来如果找到一个用户,你会重定向回同一条路线?

答案 1 :(得分:0)

您应该使用firstOrFail。如果在数据库中找不到用户,则此方法将抛出404错误。

使用 - >调用用户列值。所以你的代码应该是这样的:

Route::get('/user/{username}', function($username){
    $user = User::where('username',$username)->firstOrFail();
    return view('viewname', ['user' => $user]);
}

不要忘记为您的用户页面创建一个视图。您还应该创建一个控制器来处理这个请求。

答案 2 :(得分:0)

$user = User::where('username', '=', $user)->first();

试试这个..