yangmls / laravel-validation-trait
提供一种强大的特性,方便保存模型
dev-master
2015-06-15 13:33 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- laravel/framework: 4.2.*
This package is not auto-updated.
Last update: 2024-09-28 16:51:49 UTC
README
为laravel 4模型提供强大的特性
在Eloquent中使用它
创建一个模型并使用它
use Yangmls\ValidationTrait; class User extends Eloquent { use ValidationTrait; public function rules() { return [ 'email' => ['required', 'email'], ]; } public function ruleMessages() { return [ 'email.required' => ':attribute is required', ]; } public function customAttributes() { return [ 'email' => 'E-Mail', ]; } }
创建一个新的模型并保存
$model = new User(); $result = $model->saveFromRequest(Input::all()); // true or false return Response::json($model->getErrors());
创建一个新的模型且无错误
$model = User::createFromRequest(Input::all()); // User instance or null
保存现有的模型
$model = User::find(1); $result = $model->saveFromRequest(Input::all()); // true or false return Response::json($model->getErrors());
在其他模型中使用它
有时你可能需要在没有Eloquent的情况下处理表单,你可以这样做
use Yangmls\ValidationTrait; class Login { use ValidationTrait; public $attributes; public function __construct($input = []) { $this->attributes = $input; } public function validate($options = []) { return $this->validateRequest($this->attributes, $options); } public function rules() { return [ 'email' => ['required', 'email'], ]; } public function ruleMessages() { return [ 'email.required' => ':attribute is required', ]; } public function customAttributes() { return [ 'email' => 'E-Mail', ]; } }
然后在控制器中调用它
$model = new Login(Input::all()); $result = $model->validate(); // true or false return Response::json($model->getErrors());
内联验证器
验证器可以定义在类中,并且会自动调用
use Yangmls\ValidationTrait; class User extends Eloquent { use ValidationTrait; protected function validatorEmail($value, $input, $options) { // $value is attribute value // $input is whole input // $options is the config you pass to saveFromRequest // Note: // 1. you must use addError to stop saving // 2. you must return true if you think the validator is passed } }
内置钩子
以下方法在验证或保存时会被自动调用
beforeSave
、afterSave
、beforeValidate
、afterValidate
然而,你也可以使用laravel内置的事件进行保存/创建/更新
许可
在MIT许可下