anlutro / l4-validation
Laravel 的验证服务类。
Requires
- php: >=5.4.0
- illuminate/support: >=4.1, <6.0
- illuminate/validation: >=4.1, <6.0
Requires (Dev)
- mockery/mockery: 0.9.*
README
安装: composer require anlutro/l4-validation
从 Packagist 或 GitHub 标签列表中选择最新稳定版本。
警告:在 0.x 版本期间不保证向后兼容性。
验证服务
此验证类是 Laravel 自身验证类(通过调用 Validator::make 创建)的层,旨在注入到存储库或控制器中。它允许更高级的规则集和更动态的规则,并且正在我的 存储库类 中使用。
您的类必须实现一个抽象方法:getCommonRules
。这应该返回一个数组,其中包含在每次验证调用中使用的规则,应该是规则的最小集合。此外,您可以实现任意多的额外规则获取器 - getCreateRules
、getUpdateRules
、getUpdateAsAdminRules
、getFooRules
等。
根据您要尝试验证的操作动态合并规则。例如,$validator->validCreate($attributes)
将合并 getCommonRules
和 getCreateRules
。如果 getCreateRules
不存在,它将只使用 getCommonRules
。 $validator->validUpdateAsAdmin($attributes)
将合并 getCommonRules
和 getUpdateAsAdminRules
。规则是递归合并的。
您可以使用 replace($key, $value)
方法告诉验证器用规则中的变量替换变量。例如,如果您有一个唯一规则并希望动态替换表为模型表,您可以这样做
public function getCommonRules() {
return ['email' => 'unique:<table>'];
}
$validator->replace('table', $model->getTable());
该类还将用方括号中的匹配键替换规则中的变量。例如,[foo]
将替换为提供的输入(属性)中 'foo' 的值。这样,您可以将另一个输入字段的值添加到规则中(例如,'end_date' => ['date', 'after:[start_date]']
)。
在正则表达式规则中,替换变量将不起作用,因为这可能会破坏正则表达式操作符。
您可以使用一些挂钩来添加自定义行为。在规则合并后,将调用 prepareRules($rules, $attributes)
,允许您根据需要更改验证规则。此方法 需要 返回修改后的规则数组!
prepareValidator($validator)
在检查验证是否通过之前被调用,并可用于将 sometimes() 规则或其他任何自定义行为添加到 Illuminate\Validation\Validator 对象本身。
异常
您可以调用 $validatorService->toggleExceptions();
使验证器抛出异常而不是只返回 false。抛出的异常类型为 anlutro\LaravelValidation\ValidationException
,它有一些有用的方法。
getErrors()
获取验证错误的一维数组。getRules()
获取在验证时使用的规则数组。getAttributes()
获取已验证的输入数组。
它还可以通过 (string) $exception
转换为字符串,这将逐行渲染每个验证错误。
联系
如果您有任何问题或建议,请在 GitHub 上提交一个问题。
许可证
此存储库的内容根据 MIT 许可证 发布。