微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将参数传递给路由时未定义路由

如何解决将参数传递给路由时未定义路由

我有一个带有参数的命名路由,它看起来像这样...

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
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。