somnambulist / laravel-doctrine-entity-validation
该包已弃用,不再维护。未建议替代包。
提供 Doctrine 实体与 Laravel 验证器之间的集成。
0.1.2
2017-02-04 04:07 UTC
Requires
- php: >=7.0
- illuminate/validation: ~5.2
- laravel-doctrine/orm: 1.*
- ocramius/generated-hydrator: ~2.0
Requires (Dev)
- illuminate/config: ~5.2
- phpunit/phpunit: ~5.4
This package is auto-updated.
Last update: 2022-02-01 13:00:26 UTC
README
该项目已停止维护。
Laravel-Doctrine ORM 实体验证
通过使用 hydrators,提供标准 Doctrine 实体与 Laravel 验证器之间的集成。
要求
- PHP 7+
- Laravel 5.2+
- laravel-doctrine/orm
安装
使用 composer 安装,或从 github.com 检出/拉取文件。
- composer install somnambulist/laravel-doctrine-entity-validation
- 将服务提供者添加到您的 config/app.php 文件中
- php artisan vendor:publish
将添加两个新的配置文件
- doctrine_hydrators.php
- doctrine_validation.php
将实体类名添加到 hydrators 配置文件中,以生成 hydrators。在验证中将实体与规则类之间的映射添加到规则中,以便工厂类可以创建 Validator 实例。
验证规则应实现 EntityRules 协议或扩展:Somnambulist\EntityValidation\AbstractEntityRules
类。规则类应包含验证实体所需的基本规则。这**不是**表单验证!这些规则是您的领域实体有效的基本要求。
然后将验证规则添加到您的表单请求或验证规则中。例如:用户实体可能需要包含名称、电子邮件和用户名的 EntityRules,但在 AddUserFormRequest 中,可能还需要角色和权限。实体规则可能如下所示
class UserEntityRules extends AbstractRules
{
public function supports($entity)
{
return $entity instanceof User;
}
protected function buildRules($entity)
{
return [
'name' => 'required|min:1',
'email' => 'required|email|unique:User,email,' . ($entity->getId() ?: 'null'),
'username' => 'required|alphanum|unique:User,username,' . ($entity->getId() ?: 'null'),
];
}
}
由于实体被传递,您可以访问任何方法并创建复杂的规则。
然后可以类型提示或从容器中获取实体验证工厂
class SomeClass ...
{
public function __construct(EntityValidationFactory $validationFactory)
{
$this->factory = $validationFactory;
}
public function someMethod()
{
if ($this->factory->validate($user)) {
}
}
}
生成 hydrators
提供额外的命令以简化 hydrators 的生成
php artisan doctrine:generate:hydrators
默认情况下,这些将被缓存到 storage/cache/hydrators 文件夹中。在 hydrators 配置文件中配置存储文件夹。
可以将此命令添加到 composer install|update
,以便在更改或代码部署时自动创建 hydrators。
- 注意:不是必须缓存 hydrators,但这在生产环境中提供了更好的性能。
- 注意:在 hydrators 之前添加 doctrine:generate:proxies 是一个好的做法。