Package Data | |
---|---|
Maintainer Username: | yangmls |
Maintainer Contact: | yang.clive@gmail.com (Clive Young) |
Package Create Date: | 2015-02-04 |
Package Last Update: | 2015-06-15 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-23 03:25:05 |
Package Statistics | |
---|---|
Total Downloads: | 11 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 7 |
Total Watchers: | 2 |
Total Forks: | 2 |
Total Open Issues: | 0 |
Provide a powerful trait for laravel 4 model
create a model and use it
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',
];
}
}
create a new model and save
$model = new User();
$result = $model->saveFromRequest(Input::all()); // true or false
return Response::json($model->getErrors());
create a new model without errors
$model = User::createFromRequest(Input::all()); // User instance or null
save a existing model
$model = User::find(1);
$result = $model->saveFromRequest(Input::all()); // true or false
return Response::json($model->getErrors());
sometimes you may process a form without Eloquent, you can do like this
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',
];
}
}
then call it in controller
$model = new Login(Input::all());
$result = $model->validate(); // true or false
return Response::json($model->getErrors());
validator can be defined in the class and will be called automatically
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
}
}
below methods are called automatically when you do validating or saving
beforeSave
, afterSave
, beforeValidate
, afterValidate
however you can also use laravel built-in events for saving/creating/updating
under the MIT license