如何通过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');
所以最后我能够重定向到所需的页面,其中所需的视图加载了动态变量。
我修改了 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');
所以最后我能够重定向到所需的页面,其中所需的视图加载了动态变量。