...
Zusätzlich zu den von Symfony bereitgestellten Constraint-Klassen stellt brandbox die weitere Constraints zur Verfügung. Eine Übersicht der verfügbaren Kriterien finden sie hier.
Info |
---|
Durch brandbox bereitgestellte Constraints dürfen ausschließlich über die Datenmodellierung oder den |
...
Über den Programmcode können Kriterien pro Datenbankspalte oder für das gesamte Datenbankobjekt festgelegt werden. Für ein Kriterium welches für ein ganzes Datenbankobjekt gelten soll wird ein anderer Syntax genutzt.
Codeblock | ||||
---|---|---|---|---|
| ||||
<?php declare(strict_types=1); /** * In diesem Beispiel wird die Klasseneigenschaft $property * mit drei Kriterien für die Validierung versehen. * * 1: IsCombinedUnique(...) prüft die Eindeutigkeit der Kombination aus den definierten Spalten. * * 2. NotBlank() erfordert einen gültigen Wert in $property. * Werte welche null entsprechen sind verboten. * * 23. Length(...) erfordert das der Wert mindesten 3 und * maximal 255 Zeichen umfassen darf. * Ein Wert welcher null entspricht ist * ohne NotBlank() ebenfalls gültig. * 3 * 4. Regex(...) legt einen regulären Ausdruck fest welcher * mit dem Wert von $property geprüft wird. * Sollte der Wert null entsprechenden wird * er ohne NotBlank() als gültig angesehen. */ namespace Brandbox\SampleCore\Sample\Plugin\Lib\Entity { use Brandbox\Framework\Component\Doctrine; /** * @constraint IsCombinedUnique(columns="property,something") * * [Deklaration als Doctrine-Entity] */ class Sample extends Doctrine\Definition\EntityAbstract { /** * @constraint NotBlank() * @constraint Length(min=3, max=255) * @constraint Regex(pattern="/^[a-z]+$/Ui") * * [@Column...-Deklaration] */ public string $property = 'example'; /** * [@Column...-Deklaration] */ public string $something = 'strange'; } } |
Codeblock | ||||
---|---|---|---|---|
| ||||
<?php declare(strict_types=1); /** * In diesem Beispiel wird eine Validierungsmethode für das Datenbankobjekt definiert. * Wird eine Validierung auf diesem Objekt ausgeführt wird die Methode callback() aufgerufen. * Dort findest eine speziell für dieses Datenbankobjekt erforderliche Prüfung statt. * Im Fehlerfall wird eine entsprechende Fehlermeldung erzeugt. */ namespace Brandbox\SampleCore\Sample\Plugin\Lib\Entity { use Brandbox\Framework\Component\Doctrine; use /** @noinspection PhpUnusedAliasInspection */ Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Context\ExecutionContextInterface; /** * [Deklaration als Doctrine-Entity] */ class Sample extends Doctrine\Definition\EntityAbstract { /** * [@Column...-Deklaration] */ public string $username; /** * [@Column...-Deklaration] */ public string $password; /** * [@Column...-Deklaration] */ public string $email; /** * @Constraints\Callback */ public function callback(ExecutionContextInterface $context): void { $required = $this->username . '@example.com'; if(0 !== strcmp($required, $this->email)) { $context ->buildViolation('You must provide a correct email address.') ->atPath('email') ->addViolation() ; } } } } |
...