如何在Laravel模型中上传文件验证

时间:2014-12-25 10:48:41

标签: php validation laravel laravel-4 laravel-validation

这是我之前的Question's Continuation

我正在使用模型进行验证

我将通过这种方式将值发送给模型

$VehicleData = Input::all();
$validation  = Validator::make($VehicleData, VehicleModel::$rules);

使用以下规则验证

public static $rules = array(
        'VehicleNumber' => 'required|unique:vehicle', 
        'NumberSeats' => 'required', 
);

但是现在我想验证上传文件的大小和扩展名

我尝试在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());
    }
}

但我意识到这是一个糟糕的做法。因为它仅在验证之后调用,并且在调用此函数时调用VehicleModel::create($VehicleData);

我不知道在哪里进行文件验证和模型中的方法。

请建议我继续前进的方式。

1 个答案:

答案 0 :(得分:3)

在模型中

public static $rules = array(
    'VehicleNumber'  => 'required|unique:vehicle', 
    'NumberSeats'    => 'required',
    'InsurancePhoto' => 'required|image|mimes:jpg,png,gif|max:2000'
);
控制器中的

$VehicleData = Input::all();
$validation  = Validator::make($VehicleData, VehicleModel::$rules);
    if($validation->passes())
    {
        // Input::file('InsurancePhoto') stuff
        // store the data to the db
    }