カスタム検証クエリを Symfony2 プロジェクトに追加しています。
ドキュメントには完全な例がなく、実際にデータベース接続を Validator クラスに挿入する方法がわかりません。config でサービスを作成し、validatedBy エイリアス メソッドを Constraint クラスに追加して、これを 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 }
この場合、エラーが発生し続けます。
キャッチ可能な致命的なエラー: Acme\Bundle\Validator\Constraints\ZipDatabaseValidator::__construct() に渡される引数 1 は Doctrine\DBAL\Connection のインスタンスでなければなりません。
これをサービスとして設定したり、データベース接続を挿入したりする方法は?