Tạo lớp Model.php mà bạn sẽ kéo dài trong một mô hình tự phê
app/models/Model.php
class Model extends Eloquent {
/**
* Error message bag
*
* @var Illuminate\Support\MessageBag
*/
protected $errors;
/**
* Validation rules
*
* @var Array
*/
protected static $rules = array();
/**
* Validator instance
*
* @var Illuminate\Validation\Validators
*/
protected $validator;
public function __construct(array $attributes = array(), Validator $validator = null)
{
parent::__construct($attributes);
$this->validator = $validator ?: \App::make('validator');
}
/**
* Listen for save event
*/
protected static function boot()
{
parent::boot();
static::saving(function($model)
{
return $model->validate();
});
}
/**
* Validates current attributes against rules
*/
public function validate()
{
$v = $this->validator->make($this->attributes, static::$rules);
if ($v->passes())
{
return true;
}
$this->setErrors($v->messages());
return false;
}
/**
* Set error message bag
*
* @var Illuminate\Support\MessageBag
*/
protected function setErrors($errors)
{
$this->errors = $errors;
}
/**
* Retrieve error message bag
*/
public function getErrors()
{
return $this->errors;
}
/**
* Inverse of wasSaved
*/
public function hasErrors()
{
return ! empty($this->errors);
}
}
Sau đó, điều chỉnh Mô hình bài đăng của bạn.
Ngoài ra, bạn cần xác định các quy tắc xác thực cho mô hình này.
app/models/Post.php
class Post extends Model
{
// validation rules
protected static $rules = [
'name' => 'required'
];
}
phương pháp điều khiển
Nhờ Xây dựng mô hình lớp học, Bưu mô hình được automaticaly xác nhận trên tất cả các cuộc gọi đến save()
phương pháp
public function store()
{
$post = new Post(Input::all());
if ($post->save())
{
return Redirect::route('posts.index');
}
return Redirect::back()->withInput()->withErrors($post->getErrors());
}
này câu trả lời dựa trên số Laravel Model Validation package của Jeffrey Way cho Laravel 4.
Tất cả các khoản tín dụng cho người đàn ông này!
Cảm ơn - rất hữu ích. – Sunil
Rất tốt để sao chép vì mã theo cách thủ công. Cảm ơn bạn đã chia sẻ. – akbarbin