olsgreen/laravel-guardian

该软件包最新版本(dev-master)没有提供许可信息。

Laravel 4.x 和 Eloquent 的简单基础类,用于自验证模型。

dev-master 2014-10-06 17:03 UTC

This package is auto-updated.

Last update: 2024-09-06 21:43:45 UTC


README

为更智能、更简洁的 Laravel 4 Eloquent ORM 提供自验证模型。灵感来自 Ardent

安装

将我们的仓库添加到您的 composer.json 文件中,如下所示

"repositories": [{
        "type": "vcs",
        "url": "https://github.com/olsgreen/Guardian"
    }],

还需要 Guardian

"require": {
	"olsgreen/guardian": "dev-master"
},

然后运行 composer update

入门指南

Guardian 扩展了 Eloquent 模型,使其在需要时能够轻松地重置模型或删除。

要开始使用,只需将您的模型更改为从 Guardian 继承,并添加一个 getValidator() 方法,以便 Guardian 可以获取一个正确配置的 Validator 实例。

use Olsgreen\Guardian\Guardian;

class User extends Guardian {

	........

	/**
	 * Overridden from the base class
	 * 
	 * @return Illuminate\Validation\Validator
	 */
	public function getValidator()
	{
		// Standard rules
		$rules = array(
			'first_name' => 'required|min:3',
			'last_name' => 'required|min:3',
			'username' => 'required|unique:users,username|min:2',
			'password' => 'required|min:6',
			'email' => 'email|unique:users,email',
			);

		// Rules for models that already exist
		if ($this->exists) {
			$rules['username'] = 'required|unique:users,username,' . $this->id . '|min:2';
			$rules['email'] = 'email|unique:users,email,' . $this->id;
		}

		// Return the validator
		return Validator::make($this->attributes, $rules);
	}

	........

}

验证错误

Guardian 会在调用 save() 时自动验证模型。如果验证失败,save() 将返回 false,否则将返回 true,前提是底层保存操作成功。

如果验证失败,您可以通过在模型上调用 getValidationMessages() 来获取包含验证错误的 MessageBag

在控制器中保存用户的示例

if (!$user->save()) {
	return Redirect::route('user.form')->withErrors($user->getValidationMessages());
}

强制保存

您可以通过在模型上调用 forceSave() 来强制保存,完全绕过验证。

使用 fillFillable() 躲避 MassAssignmentExceptions

fillFillable() 允许您快速轻松地使用一个属性数组填充模型。此方法方便地绕过了使用 fill() 方法与 Input::all() 一起使用时生成的 MassAssignmentException。以下是一个使用示例

$user = User::find(1);
$user->fillFillable(Input::all());
$user->save();

许可证

版权所有(c)2014 Oliver Green

特此授予任何获得此软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供的人按以下条件这样做

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同、侵权或其他方式下,这些索赔、损害或其他责任源于、产生于或与软件或软件的使用或其他交易有关。