Benutzerdefinierter Constraint Validator mit Datenbankverbindungsabhängigkeit Symfony2
Ich füge einem Symfony2-Projekt eine benutzerdefinierte Überprüfungsabfrage hinzu.
Die Dokumente Fehlt ein vollständiges Beispiel, und ich bin nicht sicher, wie ich die Datenbankverbindung tatsächlich in die Validator-Klasse einfügen soll. Ich habe den Dienst in meiner Konfiguration erstellt, die validatedBy-Alias-Methode in meiner Constraint-Klasse hinzugefügt und dies in meiner Validator-Klasse eingerichtet:
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);
...
Hier ist meine Service-Konfiguration:
validator.node.zip_in_database:
class: Acme\Bundle\Validator\Constraints\ZipDatabaseValidator
arguments: [@database_connection]
tags:
- { name: validator.constraint_validator, alias: zip_in_database }
Ich bekomme immer wieder Fehler, in diesem Fall:
Abfangbarer schwerwiegender Fehler: Argument 1 wurde an Acme \ Bundle \ Validator \ Constraints \ ZipDatabaseValidator übergeben. :: __ construct () muss eine Instanz von Doctrine \ DBAL \ Connection sein.
Wie zum Teufel soll ich das als Dienst einrichten oder anderweitig die Datenbankverbindung einspeisen?