2014-01-29 33 views
0

我被試圖拋出一個異常,正在接收錯誤混淆,Undefined variable: validationLaravel(4)通過異常變量

這是我第一次嘗試創建一個自定義異常,我必須做有問題。在這裏我只是試圖驗證一行插入數據庫(哪些工作),我遇到的問題是例外。

控制器

public function store() 
{ 
    try 
    { 
     $this->deals->insertDeal(Input::all()); 
    } 

    catch(ValidationError $e) 
    { 
     return Redirect::route('deals.create') 
     ->withInput() 
//this is the unknown variable 
     ->withErrors($validation->errors); 
    } 

    return Redirect::route('deals.create') 
      ->with('message', 'Deal Created'); 
} 

型號

public function insertDeal($input) 
{ 
    $validation = new Services\Validators\Deal; 

    if ($validation->passes()) { 

     $deals = Deals::create($input); 
    } 

    $errors = $validation->errors; 
    throw new ValidationError($validation->errors); 
} 

自定義驗證錯誤

class ValidationError extends Exception {} 

App::error(function(ValidationError $e){ 

}); 

總括來說,我只是不知道爲什麼我越來越不確定的變量時的錯誤我嘗試觸發異常。謝謝您的幫助。

回答

2

基本上,$validationstore()方法的範圍內不可用。您可以通過重寫你的ValidationError類通過異常的錯誤:

class ValidationError extends Exception 
{ 
    protected $errors; 

    public function __construct($errors) 
    { 
     $this->errors = $errors; 
    } 

    public function getErrors() 
    { 
     return $this->errors; 
    } 
} 

和訪問錯誤的store()

public function store() 
{ 
    try { 
     $this->deals->insertDeal(Input::all()); 
    } catch(ValidationError $e) { 
     return Redirect::route('deals.create') 
      ->withInput() 
      ->withErrors($e->getErrors()); 
    } 

    return Redirect::route('deals.create') 
      ->with('message', 'Deal Created'); 
} 
+0

感謝這個完美工作。我還沒有開過一個異常類,所以我對它裏面的內容感到困惑。這有助於清除它,再次感謝 –