簡體   English   中英

如何在Laravel中通過重定向路由傳遞視圖中所需的變量?

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

我修改了controller默認auth方法,該方法將在自定義login set_password用戶重定向到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]); 
}

您可以使用

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

在你看來

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

按照Kuldeep Mishra的答案進行了嘗試,但未能實現,無論如何,我找到了一種解決方法來實現所需的輸出。 我所做的是將經過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');

因此,最終我能夠使用加載有動態變量的所需視圖重定向到所需頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM