...
v5.5
...
...
...
...
Validierungskriterien müssen entweder über den Programmcode oder die Datenmodellierung definiert werden. In allen Fällen ist die Syntax für ein Kriterium zu befolgen.
Codeblock | |
---|---|
RDark | Kriterium(parameter="wert", parameter=wert) |
...
Ü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 /** * In diesem Beispiel wird die Klasseneigenschaft $property * mit drei Kriterien für die Validierung versehen. * * 1. NotBlank() erfordert einen gültigen Wert in $property. * Werte welche null entsprechen sind verboten. * 2. 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. 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\sample\plugin\lib\entity { use brandbox\component\doctrine; /** * [Deklaration als Doctrine-Entity] */ class sample extends doctrine\lib\entityAbstract { /** * @var string * * @constraint NotBlank() * @constraint Length(min=3, max=255) * @constraint Regex(pattern="/^[a-z]+$/Ui") * * [@Column...-Deklaration] */ public $property = 'example'; } } ?> |
Codeblock | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?php /** * 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\sample\plugin\lib\entity { use brandbox\component\doctrine; use /** @noinspection PhpUnusedAliasInspection */ Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Context\ExecutionContextInterface; /** * [Deklaration als Doctrine-Entity] */ class sample extends doctrine\lib\entityAbstract { /** * @var string * * [@Column...-Deklaration] */ public $username; /** * @var string * * [@Column...-Deklaration] */ public $password; /** * @var string * * [@Column...-Deklaration] */ public $email; /** * @Constraints\Callback * * @param ExecutionContextInterface $context * * @return void */ public function callback($context) { $required = $this->username . '@example.com'; if(0 !== strcmp($required, $this->email)): $context ->buildViolation('You must provide a correct email address.') ->atPath('email') ->addViolation() ; endif; } } } ?> |
...
Hauptsächlich wird dieses Plugin genutzt um Datenbankobjekte zu validieren. Es kann allerdings auch auf andere Klassenobjekte angewendet werden. Um ein Objekt zu validieren kann folgender Code genutzt werden.
Codeblock | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?php namespace brandbox\sample\plugin\lib\execute { use brandbox\admin\plugin; use brandbox\component\http; use brandbox\component\doctrine; use brandbox\component\validator; /** * @author Max Mustermann <mustermann@example.com> */ class example extends plugin\lib\executeAbstract { use validator\validatorTrait; /** * @param doctrine\lib\entityAbstract $entity * * @return http\response\responseAbstract */ public function execute($entity) { $locale = $this->getApplicationLanguage(); return $this->validateValue($entity, $locale, function() use ($entity) { $entity->save(); return new http\response\location('http://example.com/'); }); } } } ?> |
...