我希望当用户点击个人资料页面时,我想将Auth::user()->username
作为参数传递给我的userController的show方法。我的个人资料链接如下:
<li><a href="{{URL::to('/profile')}}">Profile</a></li>
在我的路线中,我有以下路线
Route::get('/profile/{username}',function(){
return View::make('user.show')->with($username);
});
我的问题是,当我点击个人资料链接时,我可以在username
中将'/profile/{username}'
设置为Auth::user()->username
?目前,个人资料链接不会附加任何参数
答案 0 :(得分:2)
首先
{{URL::to('/profile')}}
未指向Route::get('/profile/{username})
网址,有两条不同的路由
所以你需要做的就是改变链接,即
{{URL::to('/profile/' . \Auth::user()->username)}}
然后在您的路线文件中
Route::get('/profile/{username}',function($username){
return View::make('user.show')->with(['username' => $username]);
});
//请注意,您需要使用with()方法传递数组 或者你可以这样做
Route::get('/profile/{username}',function($username){
return View::make('user.show',compact('username'));
});
答案 1 :(得分:1)
当用户点击个人资料链接时:
<li>
<a href="{!! route('user.show', Auth::user()->username) !!}">My Profile</a>
</li>
调用UserController @ show方法。
<?php
// routes.php
Route::get('profile/{username}', 'UserController@show')->name('user.show');
// UserController.php
public function show($username)
{
$user = User::whereUsername($username)->first();
return view('user.show', compact('user'));
}
并将View响应返回给用户。
@Update
如果您需要将控件重定向到UserController @ show方法,则可以执行以下操作:
<li>
<a href="{!! route('user.profile', Auth::user()->username) !!}">My Profile</a>
</li>
<?php
// routes.php
Route::get('profile/{username}', function ($username) {
return redirect()->route('user.show', Auth::id());
})->name('user.profile');
现在,如果你想自定义UserController @ show action:
<li>
<a href="{!! route('user.profile', Auth::user()->username) !!}">My Profile</a>
</li>
调用UserController @ show方法。
<?php
// routes.php
Route::resource('user', 'UserController', ['except' => ['show']);
Route::get('profile/{username}', 'UserController@profile')->name('user.profile');
现在您可以删除UserController @ show方法(如果需要)或更改要显示的配置文件方法名称。
// UserController.php
public function profile($username)
{
$user = User::whereUsername($username)->first();
return view('user.show', compact('user'));
}
答案 2 :(得分:0)
快速方法是从/ profile设置重定向,如果他们想要查看其他人的个人资料,就不会破坏该功能。
Route::get('/profile',function(){
return Redirect::to('/profile/'.Auth::user()->username);
}
但是,我建议在重定向之前执行Auth :: check()。
答案 3 :(得分:0)
我做了类似下面的事情
<li><a href="{{URL::to('/profile')}}">Profile</a></li>
并在route.php中:
Route::get('/profile',function(){
return redirect()->route('user.show',[Auth::user()->username]);
});