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

标签 symfony

我正在向 Symfony2 项目添加自定义验证查询。

The docs缺少一个完整的示例,我不确定如何将数据库连接实际注入(inject)到验证器类中。我在我的配置中创建了服务,在我的 Constraint 类中添加了 validBy 别名方法,并在我的 Validator 类中进行了设置:

use Doctrine\DBAL\Connection;

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: Acme\Bundle\Validator\Constraints\ZipDatabaseValidator
        arguments: [@database_connection]
        tags:
            - { name: validator.constraint_validator, alias: zip_in_database }

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

Catchable Fatal Error: Argument 1 passed to Acme\Bundle\Validator\Constraints\ZipDatabaseValidator::__construct() must be an instance of Doctrine\DBAL\Connection, none given,



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

最佳答案

validator.node.zip_in_database:
    class: Acme\Bundle\Validator\Constraint\ZipDatabaseValidator
    arguments: [@database_connection]
    tags:
        - { name: validator.constraint_validator, alias: zip_in_database }
您必须将教义作为参数传递给您的 Service .
编辑
确保别名与 validBy 方法返回的别名相同!
在你的情况下:
//Acme\Bundle\Validator\Constraint\ZipDatabase class
public function validatedBy()
{
    return 'zip_in_database';
}

关于symfony - 具有数据库连接依赖关系的自定义约束验证器 Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371267/

相关文章:

symfony - 如何从数据库中获取值并将其显示在所有模板中?

php - Symfony2/Doctrine2 Oracle 游标问题

mysql - 更改表时出现异常

mysql - 如何从查询生成器中删除参数?

parameters - 如何将我的 Symfony 2 项目设置为使用 parameters.yml 而不是 parameters.ini?

php - 使用 DateTime 设置日期时 Symfony2 格式错误

php - Symfony 3 中 FilesystemAdapter 的默认缓存目录在哪里?

php - 使用 Doctrine Extensions Tree Nested 集获取家长中的 child 帖子

symfony - 将数组传递给 twig 并显示它

php - 使用 Symfony2 的表单 - 具有一些不可变构造函数参数和 OneToMany 关联的 Doctrine Entity