加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

具有数据库连接依赖关系的自定义约束验证器Symfony2

发布时间:2020-12-12 08:33:34 所属栏目:MsSql教程 来源:网络整理
导读:我正在向Symfony2项目添加自定义验证查询. The docs缺少一个完整的例子,我不知道如何将数据库连接实际注入到验证器类中.我在我的配置中创建了服务,在我的Constraint类中添加了validatedBy别名方法,并在我的验证器类中设置了这个: use DoctrineDBALConnecti
我正在向Symfony2项目添加自定义验证查询.

The docs缺少一个完整的例子,我不知道如何将数据库连接实际注入到验证器类中.我在我的配置中创建了服务,在我的Constraint类中添加了validatedBy别名方法,并在我的验证器类中设置了这个:

use DoctrineDBALConnection;

class ZipDatabaseValidator extends ConstraintValidator
{

    /**
     *
     * @var Connection
     */
    private $connection;

   public function __construct(Connection $dbalConnection)  {

        $this->connection = $dbalConnection;
    }

    public function validate($zipcode,Constraint $constraint)
    {

        $sql = 'SELECT * FROM zip_table WHERE zip_code = ?';
        $stmt = $this->connection->prepare($sql); 
         ...

这是我的服务配置:

validator.node.zip_in_database:
        class: AcmeBundleValidatorConstraintsZipDatabaseValidator
        arguments: [@database_connection]
        tags:
            - { name: validator.constraint_validator,alias: zip_in_database }

在这种情况下,我会收到错误:

Catchable Fatal Error: Argument 1 passed to
AcmeBundleValidatorConstraintsZipDatabaseValidator::__construct()
must be an instance of DoctrineDBALConnection,none given,

我如何将其设置为服务或以其他方式注入数据库连接?

解决方法

validator.node.zip_in_database:
    class: AcmeBundleValidatorConstraintZipDatabaseValidator
    arguments: [@database_connection]
    tags:
        - { name: validator.constraint_validator,alias: zip_in_database }

你必须通过教条作为你的Service的参数.

编辑

确保别名与validatedBy方法返回相同!
在你的情况下:

//AcmeBundleValidatorConstraintZipDatabase class
public function validatedBy()
{
    return 'zip_in_database';
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读