я новичок в laravel и у меня проблемы с получением информации о пользователе, перейдя по маршруту ‘user / {username}’;
теоретически это должно работать, это мой маршрут:
Route::get('/user/{username}', function($username){
$user = User::where('username',$username) -> first();
if(isset($user['username'])){
return redirect()->route('/user/'.$username, ['user' => $user]);
}else{
return redirect()->route('/user/'.$username, ['error' => 'This User Does Not Exist']);
}
});
я сделал use App\User;
на странице так должно работать. я получаю эту ошибку:
NotFoundHttpException in RouteCollection.php line 161:
Любая помощь приветствуется, спасибо, пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы помочь.
Redirect принимает имя маршрута, а не путь, на который вы хотите перенаправить. В своем коде добавьте имя для вашего маршрута, например:
Route::get('/user/{username}', function($username) {
[...]
})->name('username');
// Here we call our route 'username'
Теперь вы можете сделать перенаправление следующим образом:
// Note that we call redirect with the name we just gave it, passing the username value forward
return redirect()->route('username', ['username' => $user]);
Изменить: глядя на ваш код, я не совсем понимаю, что вы хотите сделать. Код выглядит так, как если бы он создал цикл перенаправления? Похоже, если вы найдете пользователя, вы перенаправляете обратно по тому же маршруту?
Вы должны использовать firstOrFail. Этот метод выдает ошибку 404, если в базе данных не найдено ни одного пользователя.
Вызвать значение столбца пользователя с помощью ->. Итак, ваш код должен выглядеть так:
Route::get('/user/{username}', function($username){
$user = User::where('username',$username)->firstOrFail();
return view('viewname', ['user' => $user]);
}
Не забудьте создать вид на свою страницу пользователя. Вы также должны создать контроллер для обработки этого запроса.
$user = User::where('username', '=', $user)->first();
попробуйте с этим ..