问题描述
Route::get('/profile/{user_id}',[ProfileController::class,'profile'])->name('profile');
现在在我的一个控制器中,
public function _myFunction($some_data) {
return redirect()->route('profile',[$some_data->user_id]);
}
在我的 ProfileController's
profile()
函数中,我有这个。
public function profile() {
return view('modules.profile.profile');
}
我遵循了在 SO 中找到的文档和一些指南,但我遇到了同样的错误,
"Route [profile] not defined."
有人能告诉我我哪里出错了吗?
这是我的 routes/web.PHP 的样子...
Route::middleware(['auth:web'])->group(function ($router) {
Route::get('/profile/{user_id}','profile'])->name('profile');
});
解决方法
在调用路由时,您应该传递属性名称和值(作为键值对)。在这种情况下,您的路线期望 user_id
,因此您的路线生成应如下所示:
return redirect()->route('profile',['user_id' => $some_data->user_id]);
在 Laravel 中阅读有关 Generating URLs To Named Routes 的更多信息。
,我解决了这个问题,没有提供更具体的案例信息让你们感到困惑,这真的是我的坏处。
我使用的是社交名流并在第三方回调中调用了 _myFunction()
..
毕竟问题出在社交名流的google回调,而不是把return redirect()->route('profile',[$user->id])
放在_myFunction()
里面,我做的是把它传递给回调函数。
所以现在看起来像这样......
private $to_pass_user_id;
public function handleGoogleCallback()
{
try {
$user = Socialite::driver('google')->user();
$this->_myFunction($user);
return redirect()->route('profile',[$this->to_pass_user_id]);
} catch (Exception $e) {
dd($e->getMessage());
}
}
public function _myFunction($some_data) {
... my logic here
$this->to_pass_user_id = $some_value_from_the_logic
}