2017-01-03 25 views
1

你好,stackoverflow geeks,我在laravel學習曲線的最後階段都感謝你們。 但是,我需要生成像一條警告消息,「你不能刪除分配給用戶的角色」每次用戶試圖刪除分配給用戶的角色。而不是它加載一個帶有sql錯誤的頁面。我該怎麼做? 而我又如何避免已被存儲的密碼再次被散列。如: - $ 2Y $ 10 $ p8JwI5P4yE2UFo2.vHP99.0dP2jU7ll/9w73IzUa9/yegKOSTHJWq總是散列每一次我編輯用戶的信息的時間。 感謝大家誰已經由時間來回答如何在laravel中生成錯誤消息

代碼

public function destroy(Request $request,$id) 
    { 
     // delete 
    // $role = Role::find($id); 
    //$role->delete(); 
    $role = Role::find ($id); 
    if ($role->users() !=null) { 
     return redirect()->back()->withInput(['warning' => 'Not allowed']); 
    } 
    $role->delete(); 

    // redirect 
    Session::flash('message', 'Record successfully deleted!'); 
    Session::flash('alert-type', 'success'); 

    return Redirect::to('role'); 
    } 

回答

2

這在很大程度上取決於你想如何處理錯誤做出學習laravel難不倒我。您可以捕獲sql異常並顯示您的自定義錯誤,或者可能更適合您的是處理傳入請求,驗證它並在驗證失敗時返回錯誤。

下面是驗證文檔:https://laravel.com/docs/5.3/validation

您對如何驗證請求多個選項。簡單的例子來驗證一個標題爲表中的職位唯一的,最多255個字符長:

$this->validate($request, [ 
    'title' => 'required|unique:posts|max:255' 
]); 

如果你不能找到幫助你根本Ofcourse,你可以自己定義的驗證規則https://laravel.com/docs/5.3/validation#custom-validation-rules

規則也手動進行驗證。在您的請求或在您的控制器(取決於您的設置)只是檢查它

// assuming you want to delete an entry 
public function delete(Request $request, $id) 
{ 
    $role = App\Role::findOrFail($id); 
    if ($role->users() != null) { 
     return redirect()->back()->withInput(['message' => 'Not allowed']); 
     // now you can output $message 
    } 

    $role->delete(); 
    return ... 
} 
+0

謝謝弗蘭克,驗證手動已爲我工作。它不會帶來任何錯誤,但它不能刪除未分配的角色,也不會顯示錯誤消息 –

+0

Try - > withInput(['warning'=>'Not allowed']);並在您的模板中輸出{{$ warning}} –

+0

在所有bro都沒有變化。 –

相關問題