如果条件失败,Laravel会从模型中抛出错误

时间:2014-12-25 08:47:17

标签: php laravel laravel-4

我在模型

中进行所有验证

我的规则是

public static $rules = array(
        'VehicleNumber' => 'required|unique:vehicle', 
        'NumberSeats' => 'required', 
        'VehicleType' => 'required', 
        'MaximumAllowed' => 'numeric|max:3',
        'VehicleCode' => 'required|unique:vehicle');
}

但是为了更改文件名并检查其大小,我正在SetFooAttribute

进行处理
public function setInsurancePhotoAttribute($InsurancePhoto)
{
    if($InsurancePhoto && Input::file('InsurancePhoto')->getSize() < '1000')
    {
    $this->attributes['InsurancePhoto'] = Input::get('VehicleCode') . '-InsurancePhoto.' . Input::file('InsurancePhoto')->getClientOriginalExtension();
    Input::file('InsurancePhoto')->move('assets/uploads/vehicle/', Input::get('VehicleCode') . '-InsurancePhoto.' . Input::file('InsurancePhoto')->getClientOriginalExtension());
    }
}

条件

if($InsurancePhoto && Input::file('InsurancePhoto')->getSize() < '1000')

如果图像存储失败,则不会设置属性。

但在这种情况下如何将错误抛给用户?

2 个答案:

答案 0 :(得分:0)

您可以抛出异常并显示错误消息。

<强>模型

if($InsurancePhoto && Input::file('InsurancePhoto')->getSize() < '1000') {
    // process image
} else {
    throw new \Exception('Error message');
}

在控制器(您调用验证)中,您可以捕获此异常并将其打印给用户。

答案 1 :(得分:0)

getSize()返回整数,因此您不应该使用字符串进行比较,因为您已在单引号中写入1000。您可以在laravel中创建自己的自定义验证。请查看此链接stackoverflowhttp://culttt.com/2014/01/20/extending-laravel-4-validator/