somnambulist/laravel-doctrine-entity-validation

该包已弃用,不再维护。未建议替代包。

提供 Doctrine 实体与 Laravel 验证器之间的集成。

0.1.2 2017-02-04 04:07 UTC

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 是一个好的做法。

链接