提问人:modi 提问时间:1/20/2021 最后编辑:modi 更新时间:1/20/2021 访问量:770
将参数传递给路由时未定义路由
Route not defined when passing parameter to a route
问:
我有一个命名路由,其参数如下所示......
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."
有人可以启发我哪里做错了吗?
这是我的路由/web.php 的样子...
Route::middleware(['auth:web'])->group(function ($router) {
Route::get('/profile/{user_id}', [ProfileController::class, 'profile'])->name('profile');
});
答:
0赞
ByWaleed
1/20/2021
#1
调用路由时,应将属性的名称与值一起传递(作为键 vaue 对)。在本例中,您的路由是预期的,因此您的路由生成应如下所示:user_id
return redirect()->route('profile', ['user_id' => $some_data->user_id]);
详细了解如何在 Laravel 中生成命名路由的 URL。
评论
0赞
ByWaleed
1/20/2021
你能在跑步时看到路线吗,有名字吗?php artisan route:list
0赞
modi
1/20/2021
哎呀,我在 SO 中发布半屁股数据做得很糟糕。我回答了自己的问题。
0赞
modi
1/20/2021
#2
我解决了这个问题,这真的是我的错,因为我没有提供更具体的案例信息,让你们感到困惑。
我正在使用社交名媛,并在第三方的回调中打电话。_myFunction()
毕竟问题出在社交名媛的谷歌回调上,而不是放在里面,我做的是把它转移到回调函数上。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
}
评论
redirect()->route('profile')
mysite.com/profile#
dd
ProfileController's
profile()
$router