【问题标题】:how to use named routes in view where named routes have wildcard如何在命名路由有通配符的情况下使用命名路由
【发布时间】:2015-07-29 22:13:09
【问题描述】:

我有一组这样的路线

Route::group(['prefix' => 'admin/{username}'],function()
{
    Route::get('', ['as' => 'dashboard', 'uses' => 'AdminController@index']);

    Route::get('settings', ['as' => 'settings', 'uses' => 'AdminController@settings']);
});

在我看来,我使用命名路由作为这样的链接引用

<li><a href="{{ route( 'settings' ) }}"><span>Settings</span></a></li>

但它呈现为

<li><a href="http://localhost:8000/admin/%7Busername%7D/settings"><span>Settings</span></a></li>

用户名按字面意思打印,但不是实际值。我真正想要的是这个

<li><a href="http://localhost:8000/admin/john/settings"><span>Settings</span></a></li>

如何做到这一点?

【问题讨论】:

  • 只需提供用户名作为第二个参数就可以了,检查答案。

标签: php routes laravel-5 blade


【解决方案1】:

您应该尝试关注...

<li><a href="{{ route( 'settings', Auth::user()->username ) }}"><span>Settings</span></a></li>

您必须将当前用户名作为第二个参数传递。

【讨论】:

    【解决方案2】:

    生成 URL 时必须传递路由参数。喜欢:

    {{ route('settings', ['john']) }}
    

    显然你宁愿做这样的事情:

    {{ route('settings', [$user->name]) }}
    

    由于您只有一个参数,您甚至不必将其作为数组传递:

    {{ route('settings', $user->name) }}
    

    【讨论】:

      【解决方案3】:

      因此地址看起来更好,如果您的用户名带有大写字母,您可以使用strtolower()

      <li><a href="{{ route( 'settings', strtolower(Auth::user()->username) ) }}"><span>Settings</span></a></li>
      

      注意

      Auth::user() 用于当前用户。如果没有人登录,您会收到错误消息! 所以你可以做个检查。

      @if(Auth::user())
          <li><a href="{{ route( 'settings', strtolower(Auth::user()->username) ) }}"><span>Settings</span></a></li>
      @endif
      

      【讨论】:

        【解决方案4】:

        另一种方法是通过控制器传递通配符以查看并在路由中使用它作为第二个参数

        首先在控制器中传递通配符

        public function index($username)
        {
            return view('admin.dashboard', compact('username'));
        }
        

        并在视图中将路由中的变量作为第二个参数传递

        <li><a href="{{ route( 'settings', $username) }}"><span>Settings</span></a></li>
        

        【讨论】:

          猜你喜欢
          • 2019-06-14
          • 2020-09-24
          • 1970-01-01
          • 1970-01-01
          • 2019-11-05
          • 2018-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多