【问题标题】:Passing username to the url Laravel 5.2将用户名传递给 url Laravel 5.2
【发布时间】:2017-05-16 10:45:05
【问题描述】:

所以我决定在我的应用程序中更改 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

感谢任何帮助!

【问题讨论】:

    标签: php laravel laravel-5.2 laravel-routing


    【解决方案1】:

    标题

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

    如果不工作:

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

    【讨论】:

    • 它与 AlexeyMezenin 给我的答案几乎相同,所以我仍然得到那个错误。
    【解决方案2】:

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

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

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

    【讨论】:

    • 正在使用身份验证中间件,当他登录并重定向到登录的用户配置文件时会发生这种情况。
    • @AndreasElia 他不将它用于构建 URL 的方法。
    • 这只是在登录页面中添加了一个“默认”:/user/signin?default。但错误仍然出现。
    • @daino92 它应该创建正常的 URL。请显示您使用的完整代码(完整的a href)。
    • @AlexeyMezenin 你的意思是在标题中吗?如果是,我会编辑帖子。
    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 2023-03-10
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2014-04-26
    • 2017-01-30
    • 2016-05-16
    相关资源
    最近更新 更多