我对尝试抛出异常时收到的错误感到困惑,Undefined variable: validation
这是我第一次尝试创建自定义异常,而且我一定是做错了。在这里,我只是想验证插入到数据库中的行(哪个有效),我遇到的问题是异常。
控制器
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){
});
总结一下,我只是不确定为什么我在尝试触发异常时会收到未定义变量的错误。谢谢你的帮助。
答案 0 :(得分:2)
基本上,$validation
方法范围内不提供store()
。您可以通过重写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');
}