将用户名传递给网址Laravel 5.2

时间:2017-01-02 10:20:36

标签: php laravel laravel-5.2 laravel-routing

所以我决定改变应用程序中url的外观。目前的外观是这样的:/user/profile。这是用户登录后看到的页面。

我想将$username传递给网址,如下所示:/name_of_the_user/profile

这是我到目前为止所尝试的:

路线:

Route::get('/{user}/profile', [
'uses' =>'UserController@getProfile',
'as' => 'user.profile',
'middleware' => 'auth'
]);

链接:

<a href="{{ route('user.profile',auth()->check() ? auth()->user()->username : 'default') }}">User Profile</a>

这部分有效。

当用户登录时,他收到此错误:

  

UrlGenerationException.php第17行中的UrlGenerationException:   缺少[Route:user.profile] [URI:{user} / profile]的必需参数。

但如果我重新加载页面就可以了。用户名成功传递给url。

如何修复此错误?

我应该说用户前往/user/signin登录并将其重定向到/user/profile

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您需要为未登录的用户添加一些默认值:

auth()->check() ? auth()->user()->username : 'default'

如果您想重定向未登录的用户,请使用auth middleware或自定义middleware

答案 1 :(得分:0)

标题

<a href="{{ route('user.profile', Auth::user()->username) }}">User Profile</a>

如果不能正常工作:

<a href="{{ route('user.profile', Auth::user()->username ? : 'nousernamefound') }}">User Profile</a>