betawax / role-model
Laravel Eloquent ORM 的高级模型。
Requires
- php: >=5.3.0
- illuminate/database: ~4
- illuminate/support: ~4
- illuminate/validation: ~4
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-23 11:24:41 UTC
README
Role Model 为您的 Laravel 4 Eloquent 模型添加验证功能。
目录
安装
通过在您的 composer.json 中引入它来使用 Composer 安装该软件包
"require": {
"betawax/role-model": "~1.0"
}
之后不要忘了运行 composer install。
注意! 使用 ~1.0 仅获取直到下一个主要版本发布前的稳定版本,或者使用 dev-master 以保持与 master 分支最新提交同步。
现在,您不必在模型中扩展 Eloquent,而是扩展 Betawax\RoleModel\RoleModel。
class Foobar extends Betawax\RoleModel\RoleModel {
}
为了方便起见,我建议您编辑您的 app/config/app.php 并将 Betawax\RoleModel\RoleModel 添加到 aliases 数组中
'aliases' => array(
'RoleModel' => 'Betawax\RoleModel\RoleModel'
)
现在您可以直接在模型中扩展 RoleModel
class Foobar extends RoleModel {
}
就是这样。由于 Role Model 扩展自 Eloquent,因此您不需要在模型中更改其他任何内容。现在您可以开始使用下面用法部分中描述的额外功能。
用法
验证
Role Model 允许在模型而不是控制器中进行验证。您只需在模型中指定验证规则,Role Model 就会在每次保存时自动验证模型。验证本身是通过 Laravel 的 验证 功能完成的。
定义验证规则
通过静态 $rules 数组定义您的模型的验证规则
class Foobar extends RoleModel {
public static $rules = array(
'name' => 'required',
'email' => 'unique:foobar,email,:id:',
);
}
有关所有可用 验证规则 的列表,请参阅 Laravel 文档。
注意! 注意,在上面的示例中,:id: 是一个占位符,在每次验证之前自动替换为您的模型主键的值。这允许在更新模型时使用 唯一验证规则。欢迎。
保存时自动验证
Role Model 使用 Eloquent 的 模型事件 来在模型的生命周期中挂钩并自动在每次保存时验证模型。一个示例实现如下:
public function store()
{
$model = new Foobar;
$model->name = 'foobar';
if ($model->save())
{
// Validation passed
return Redirect::action('FoobarController@index');
}
// Validation failed, errors are available via $model->errors()
return Redirect::action('FoobarController@create')->withInput()->withErrors($model->errors());
}
检索验证错误
您可以通过 errors() 获取器检索验证错误
$model->errors() // Instance of MessageBag or null
与直接使用 Laravel 的 Validation 类类似,errors() 的返回值将是一个 MessageBag 实例或如果没有验证错误则为 null。
检查验证错误
要检查模型是否有验证错误,请使用 hasErrors() 方法
$model->hasErrors() // true or false
不保存验证
如果您只想验证而不保存,可以直接使用 validate() 方法
$model->validate() // true or false
使用自定义规则验证
您也可以通过将其传递给 validate() 方法来使用自定义规则进行验证
$rules = array(
'name' => 'required|min:5'
);
$model->validate($rules);
检索验证规则
您可以在不实例化整个模型的情况下检索您的模型的验证规则
$model::$rules // array
访问 Validator 实例
您可以在验证后使用 validator 获取器访问 Validator 实例
$model->validate(); // or $model->save()
$validator = $model->validator(); // Illuminate\Validation\Validator
$messages = $validator->messages();
强制保存而不验证
如果您想强制保存模型而不验证,只需使用 forceSave() 方法而不是 save()
$model->forceSave()
变更日志
有关更改列表,请参阅 GitHub 发布 页面。
许可证
许可协议为 MIT 许可。