laravel получает информацию о пользователе, перенаправляя к ‘/ user / {username}’ Не работает

я новичок в 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:

Любая помощь приветствуется, спасибо, пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы помочь.

0

Решение

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]);

Изменить: глядя на ваш код, я не совсем понимаю, что вы хотите сделать. Код выглядит так, как если бы он создал цикл перенаправления? Похоже, если вы найдете пользователя, вы перенаправляете обратно по тому же маршруту?

2

Другие решения

Вы должны использовать firstOrFail. Этот метод выдает ошибку 404, если в базе данных не найдено ни одного пользователя.

Вызвать значение столбца пользователя с помощью ->. Итак, ваш код должен выглядеть так:

Route::get('/user/{username}', function($username){
$user = User::where('username',$username)->firstOrFail();
return view('viewname', ['user' => $user]);
}

Не забудьте создать вид на свою страницу пользователя. Вы также должны создать контроллер для обработки этого запроса.

0

$user = User::where('username', '=', $user)->first();

попробуйте с этим ..

0
По вопросам рекламы [email protected]