我是这样的团体路线
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>
怎么做?
答案 0 :(得分:2)
生成URL时必须传递路由参数。像:
{{ route('settings', ['john']) }}
显然你宁愿做类似的事情:
{{ route('settings', [$user->name]) }}
由于您只有一个参数,因此您甚至不必将其作为数组传递:
{{ route('settings', $user->name) }}
答案 1 :(得分:2)
你应该试试......
<li><a href="{{ route( 'settings', Auth::user()->username ) }}"><span>Settings</span></a></li>
您必须将当前用户名作为第二个参数传递。
答案 2 :(得分:1)
因此,如果您的用户名为大写字母,那么地址看起来会更好,您可以使用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
答案 3 :(得分:0)
另一种方法是将通配符传递给控制器进行查看,并将其作为第二个参数在路径中使用
首先在控制器中传递通配符
public function index($username)
{
return view('admin.dashboard', compact('username'));
}
并在视图中将路径中的变量作为第二个参数
传递<li><a href="{{ route( 'settings', $username) }}"><span>Settings</span></a></li>