magniloquent / magniloquent
Laravel 4 的 Eloquent 的自验证模型
Requires
- php: >=5.3.0
- illuminate/database: 4.x
- illuminate/support: 4.x
- illuminate/validation: 4.x
This package is not auto-updated.
Last update: 2022-02-01 12:25:37 UTC
README
Laravel 4 的 Eloquent 的自验证模型。
基于 Max Ehsan 开发的优秀 Ardent 包。
此包深受 Ardent 启发。我想做一些大的改动,因此我认为最好是从一个新的包开始,而不是从根本上改变 Ardent 验证数据的方式。如果你想要扩展 Eloquent 的功能,也应该查看 Ardent!
Magniloquent 从 Cribbb 中提取出来。
##安装 将 magniloquent/magniloquent
添加到 composer.json
中的依赖项
{ "require": { "magniloquent/magniloquent": "dev-master" } }
使用 composer update
更新你的包或使用 composer install
安装。
##入门 Magniloquent 扩展了 Eloquent 而不是替换它,因此要使用 Magniloquent,你需要像这样扩展你的模型
use Magniloquent\Magniloquent\Magniloquent; class User extends Magniloquent{}
Eloquent 的所有功能仍然可用,因此你可以继续像平常一样与你的模型交互。如果你的某个模型不需要验证,你不必使用 Magniloquent,你可以自由混合使用。
##验证规则 对于每个模型,你需要设置验证规则以控制可以插入数据库的数据类型。通常你可以在任何地方做这件事,但为了使用 Magniloquent,你应该将你的规则保留在模型中。
Magniloquent 使用 Laravel 的出色 验证 类,因此定义你的规则非常简单。
你的验证规则仅作为静态参数存储,并分别存储在 save
、create
和 update
数组中
/** * Validation rules */ public static $rules = array( "save" => array( 'username' => 'required|min:4', 'email' => 'required|email', 'password' => 'required|min:8' ), "create" => array( 'username' => 'unique:users', 'email' => 'unique:users', 'password' => 'confirmed', 'password_confirmation' => 'required|min:8' ), "update" => array() );
save
数组是适用于每次模型更改时的验证规则。而 create
和 update
数组仅在各自的方法中添加。
所以在上面的例子中,当创建用户时,用户名应该是唯一的。当用户更新他们的任何信息时,不会应用唯一性验证测试。
注意:Magniloquent 能够在验证唯一值时正确忽略当前对象。
##更简单的关联关系 在 Laravel 中定义关系可能会在一个模型中占用很多空间。这可能会使阅读和维护你的模型变得更加困难。幸运的是,Magniloquent 使定义关系变得轻而易举。在你的模型中添加一个 $relationships
多维数组。在其内部,定义将要调用的关系的名称作为键,将值作为一个参数数组。第一个参数是关系的类型。其余的是传递给该函数的参数。以下是一个示例
class Athlete extends Magniloquent { protected static $relationships = array( 'trophies' => array('hasMany', 'Trophy'), 'team' => array('belongsTo', 'Team', 'team_id'), 'sports' => array('belongsToMany', 'Sport', 'athletes_sports', 'athlete_id', 'sport_id') ); }
##自定义清理 Magniloquent 将自动清理以下划线 _
开头或以 _confirmation
结尾的任何属性。如果你想清理其他字段,请添加一个具有键为要清理的属性的 protected static $purgeable
数组。以下是一个示例
class Account extends Magniloquent { protected static $purgeable = ['ssn']; }
每次保存此模型时,$ssn
属性将在保存到数据库之前从对象中删除。这允许你运行下面的代码,而不必担心将不必要的数据插入数据库。
$account->save(Input::all());
##自定义显示名称 Magniloquent 允许您自定义验证下每个字段的显示名称。只需添加一个返回数组的 niceNames() 类方法,其中键是字段名称,值是它们的显示名称。下面是一个示例。
protected function niceNames() { return array( 'email' => 'email address' ); }
现在,每当有电子邮件验证问题时,用户收到的消息将是“电子邮件地址”而不是“电子邮件”。您还可以选择使用 trans() 或一些自定义逻辑代码来返回本地化或计算后的显示名称。
注意:在旧版本中,此功能作为 $nicenames 类属性实现。保留了对此的向后兼容性,但鼓励您在新模型中使用 niceNames()。
##控制器示例 下面是一个 store
方法的示例
/** * Store a newly created resource in storage. * * @return Response */ public function store() { $s = User::create(Input::all()); if($s->isSaved()) { return Redirect::route('users.index') ->with('flash', 'The new user has been created'); } return Redirect::route('users.create') ->withInput() ->withErrors($s->errors()); }
第一步 使用 Laravel 的 create 方法发送 Input::all()
。将返回值保存到变量中。
第二步 使用 saved()
方法确定模型是否已正确保存。
第三步 使用 errors()
方法返回验证错误。
返回的错误使用 Laravel 的 MessageBag。
许可证
MIT 许可证 (MIT)
版权所有 (c) 2014 Philip Brown 和 Alex Sears
以下对本软件和相关文档文件(以下简称“软件”)的副本的任何人,免费获得以下权限:在不限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供方提供软件的人做上述事情,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和无侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,无论是否与软件或其使用或其他交易有关。