目前,用户个人资料可通过 ID 访问,如此
简档/ 7
我想通过我创建的名称来访问它
简档/约翰
这是我的路线
Route::get('profile/{id}', 'ProfilController@tampilkanID');
这是我的控制器
public function tampilkanID($id)
{
$auth = Auth::user()->id;
$users=\App\users::all()->whereNotIn('id',$auth);
$tampilkan = Users::find($id);
return view('tampilkan', compact('tampilkan', 'users'));
}
这就是我在刀片中的称呼方式
@foreach($users as $user)
<tr>
<td><a id="teamname" href="{{ url('profile',$user->id) }}" target="_blank">{{$user->name}}</a></td>
</tr>
@endforeach
谢谢
答案 0 :(得分:2)
试试这个:
路线:
Route::any('profile/{name}', 'ProfilController@index')->name('profile.index');
控制器:
public function index(Request $request, $name)
{
$user = User::where('name', $name)->first();
if(isset($user))
return view('tampilkan', ['user' => $user]);
return "user not found!";
}
刀片:
@foreach($users as $user)
<tr>
<td><a id="teamname" href="{{ route('profile.index',['name' => $user->name]) }}" target="_blank">{{$user->name}}</a></td>
</tr>
@endforeach
<强>建议:强>
如果你这样做,你还应该设置&#34; name&#34;列到&#34;唯一&#34;在users
表中,以便每次只获得一个用户,而不是将用户彼此混淆。
答案 1 :(得分:0)
您可以使用laravel Route Model Binding
。
什么是路线模型Binging?
Laravel中的路径模型绑定提供了一种将模型实例注入路径的机制。
我该如何使用?
传递object rather then id
,如
Route::get('users/{user}', function ($user) {
return view('user.show', compact('user'));
});
在User.php
定义getRouteKeyName
中,然后返回您想要的任何路线
public function getRouteKeyName()
{
return 'name'; //this will return user name as route
}
所以您的路线将是users/name
有关更多信息,请查看laravel文档https://laravel.com/docs/5.5/routing#route-model-binding
答案 2 :(得分:0)
只需自定义RouteServiceProvider,如下所示:
public function boot()
{
parent::boot();
Route::bind('user', function ($value) {
return App\User::where('name', $value)->first() ?? abort(404);
});
}
或
在模型中自定义路线键。
例如:
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'name';
}
路线:
Route::get('users/{user}', function ($user) {
return view('user.show', compact('user'));
});