我正在向Symfony2项目添加自定义验证查询.
文档缺少一个完整的示例,我不确定如何将数据库连接实际注入Validator类.我在我的配置中创建了服务,在我的Constraint类中添加了validatedBy别名方法,并在我的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);
...
Run Code Online (Sandbox Code Playgroud)
这是我的服务配置:
validator.node.zip_in_database:
class: Acme\Bundle\Validator\Constraints\ZipDatabaseValidator
arguments: [@database_connection]
tags:
- { name: validator.constraint_validator, alias: zip_in_database }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我不断收到错误:
可捕获的致命错误:传递给Acme\Bundle\Validator\Constraints\ZipDatabaseValidator :: __ construct()的参数1必须是Doctrine\DBAL\Connection的实例,没有给出,
我是如何将其设置为服务或以其他方式注入数据库连接?
validator.node.zip_in_database:
class: Acme\Bundle\Validator\Constraint\ZipDatabaseValidator
arguments: [@database_connection]
tags:
- { name: validator.constraint_validator, alias: zip_in_database }
Run Code Online (Sandbox Code Playgroud)
您必须将教义作为参数传递给您的服务。
确保别名与validatedBy 方法返回的相同!
在你的情况下:
//Acme\Bundle\Validator\Constraint\ZipDatabase class
public function validatedBy()
{
return 'zip_in_database';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5028 次 |
| 最近记录: |