如何通过laravel中的重定向路由传递视图中需要的变量?

How to pass variables needed in view through redirect route in laravel?

我修改了 controller 中的默认 auth 方法,它在自定义 login 后将用户重定向到 set_password 页面。问题是我可以很好地将它重定向到所需的页面,但我需要同时传递两个通过查询数据库返回的动态变量,我无法通过重定向传递。

我修改的controller方法如下:-

protected function authenticated(Request $request, $user)
{
    $activated_up = User::where('id_user',Auth::user()->id_user)
                    ->where(function($query) {
                    $query->where('activated_up', '=', '1')
                    ->orWhere('activated_up', '=','0');
                })
                    ->get(['activated_up']);   
    $showuser = UserProfile::where('id_user',Auth::user()->id_user)->first();

    return redirect()->route('set_password',['activated_up' => $activated_up, 'showuser' => $showuser]); 
}

我知道要将变量传递给 view,我需要使用 compact 方法,如下所示:- return view('set_password', compact('activated_up', 'showuser'); 但无法通过重定向完成。

我重定向的方式意味着我在 controller 方法中将参数传递给 route,但我需要将变量而不是参数传递给重定向的 view。如何实现?

 protected function authenticated(Request $request, $user)
{
$activated_up = User::where('id_user',Auth::user()->id_user)
                ->where(function($query) {
                $query->where('activated_up', '=', '1')
                ->orWhere('activated_up', '=','0');
            })
                ->get(['activated_up']);   
$showuser = UserProfile::where('id_user',Auth::user()->id_user)->first();

return redirect()->route('set_password',['activated_up' => $activated_up, 'showuser' => $showuser]); 
}

您可以使用 With

return redirect()->route('set_password')->with('data', ['some kind of 
data']);

在您看来

 @if (session::has('data'))
   The data is {{ session::get('data') }}
 @endif

按照 的回答中的描述进行了尝试,但无法实现,无论如何我找到了一种解决方法来实现我想要的输出。我所做的是将我的 authenticated 方法更改为:-

 protected function authenticated(Request $request, $user)
{   
    return redirect()->route('set_password');   
}

我只从上述方法重定向到 set_password 路由,并在控制器中创建了新方法来显示带有压缩变量的视图,如下所示:-

public function setPasswordForm(Request $request)
{
    $activated_up = User::where('id_user',Auth::user()->id_user)
                    ->where(function($query) {
                    $query->where('activated_up', '=', '1')
                    ->orWhere('activated_up', '=','0');
                })
                    ->get(['activated_up']);   
    $showuser = UserProfile::where('id_user',Auth::user()->id_user)->first();
    return view('set_password', compact('activated_up', 'showuser'));
}

路由 web.php 文件中的一个小改动:-

Route::get('/set_password', 'Controller@setPasswordForm')->name('set_password');

所以最后我能够重定向到所需的页面,其中所需的视图加载了动态变量。