betawax/role-model

Laravel Eloquent ORM 的高级模型。

v1.0.4 2013-11-26 14:39 UTC

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 许可。