2017-05-26 75 views
1

我有一個管理員可以註冊自己的網站。目前只有一個管理員所以下面的功能,適用於傳遞值:Laravel傳遞值作爲管理員和普通用戶

public function getAllVideos() 
{ 
    $videos = Video::all(); 
    $price = DB::table('donor')->sum('amount_donated'); 
    $goal = auth()->user()->goal; 

    return view('adminmanagement', compact('videos', 'price', 'goal')); 
} 

public function changeGoal(Request $data) 
{ 
    auth()->user()->update([ 
     'goal' => $data->input('newGoal') 
    ]); 

    return redirect('/home'); 
} 

如果我只是需要把它傳遞給一個視圖,其中普通用戶可以看到, 做我做以下?

public function getAllVideos() 
    { 
     $videos = Video::all(); 
     $price = DB::table('donor')->sum('amount_donated'); 

User::first()->goal;

 return view('adminmanagement', compact('videos', 'price', 'goal')); 
    } 

    public function changeGoal(Request $data) 
    { 
     auth()->user()->update([ 
      'goal' => $data->input('newGoal') 
     ]); 

     return redirect('/normalview'); 
    } 

但如果有一個以上的註冊用戶(管理員)在系統中的內容。因爲一次只有一個管理員登錄,它還會沒事嗎?還是代碼需要更改?

編輯: 我只爲管理員註冊(這是「用戶」),普通用戶(在我的情況是「供體」)沒有任何需要註冊/登錄。所以我的主要目的是能夠將這個$目標值傳遞給兩個不同的頁面。一個訪問管理員(假設一個名爲jon的已註冊和已登錄的管理員)以及其他普通用戶可訪問的訪問權限。所以我目前的代碼'User :: first() - >目標;'應該做的伎倆,對吧?但是,如果讓我們說,另一個名爲jim的管理員註冊並登錄,會好嗎?所以現在登錄的管理員是jim,而不是jon 它仍然會在管理員的視圖頁中顯示$目標值(由jim訪問)和普通用戶的查看頁面(由正常/隨機的人訪問)?

回答

1

從您的其他問題,你說,只有一個用戶,它是一個管理員。在這種情況下,您可以用User::first()替換auth()->user()。但是,如果您有多個管理員或用戶,則需要使用用戶標識User::find(1)來指定用戶。每個用戶都有一個目標字段,我假設你只想從管理員用戶獲取具有實際值的目標。如果是的話,你可以這樣做。

更換

$goal = auth()->user()->goal; 

隨着

$goal = User::find(1)->goal; 

確保使用的用戶的用戶ID與目標價值。

+0

您可以查看我剛剛添加的編輯部分,並讓我知道您的答案是否與它匹配。謝謝 – AJth

+1

U可以有多個管理員,但只需要一個管理員用戶存儲目標值並使用它來顯示。因此,使用'User :: find(1) - > goal;'更安全,並用您想要存儲目標的管理員用戶標識替換1。 – Sandeesh

+0

說實話,正確的實現是爲目標提供一個單獨的表並使用它來存儲或獲取,而不是與用戶存儲目標值。 – Sandeesh

1

檢索用戶通過auth()->user()Auth::user()(我更喜歡第二種方式)只返回當前登錄的用戶。

如果你寫: Auth::user()->username它會顯示自己的名字給所有查看此頁面的用戶。

無需擔心:)

然而,User::first()將獲得在users表中的第一reccord所以它永遠是相同的用戶,它可能是一個普通用戶

+0

請在我的問題中檢查我的編輯 – AJth

+1

正如我在我的回覆中所說,User :: first()只會檢索表格的第一個記錄。這意味着您將始終從不同的頁面檢索相同的目標事件。 您應該存儲或傳遞一個參數,其中包含想要的管理員用戶的編號 –

相關問題