...
Untergeordnete Seiten (Anzeige untergeordneter Seiten) |
---|
all | true |
---|
depth | 1 |
---|
style | h3 |
---|
sort | title |
---|
|
Konfiguration
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 |
---|
language | php |
---|
title | Kriterien pro Datenbankspalte |
---|
|
<?php
declare(strict_types=1);
/**
* 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 brandboxBrandbox\SampleCore\sampleSample\pluginPlugin\libLib\entityEntity {
use brandboxBrandbox\Framework\componentComponent\doctrineDoctrine;
/**
* [Deklaration als Doctrine-Entity]
*/
class sampleSample extends doctrineDoctrine\libDefinition\entityAbstractEntityAbstract
{
/**
* @var string
*
* * @constraint NotBlank()
* @constraint Length(min=3, max=255)
* @constraint Regex(pattern="/^[a-z]+$/Ui")
*
*
* [@Column...-Deklaration]
*/
public public string $property = 'example';
}
}
?> |
Codeblock |
---|
language | php |
---|
title | Ein benutzerdefiniertes Kriterium für ein Datenbankobjekt |
---|
|
<?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 brandboxBrandbox\SampleCore\sampleSample\pluginPlugin\libLib\entityEntity {
use brandboxBrandbox\Framework\componentComponent\doctrineDoctrine;
use /** @noinspection PhpUnusedAliasInspection */ Symfony\Component\Validator\Constraints;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
/**
* [Deklaration als Doctrine-Entity]
*/
class sampleSample extends doctrineDoctrine\libDefinition\entityAbstractEntityAbstract
{
/**
* @var string
*
* [@Column...-Deklaration]
*/
public public string $username;
/**
* @var string
*
* [@Column...-Deklaration]
*/
public public string $password;
/**
* @var string
* * [@Column...-Deklaration]
*/
public string public $email;
/**
* @Constraints\Callback
*
* @param ExecutionContextInterface $context
*
* @return void
*/
*/
public function callback(ExecutionContextInterface $context): {void
{
$required = $this->username . '@example.com';
if(0 !== strcmp($required, $this->email)):
$context
{
$context
->buildViolation('You must provide a correct email address.')
->atPath('email')
->addViolation()
;
endif;
}
}
}
?> ;
}
}
}
}
|
Verwendung
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 |
---|
language | php |
---|
title | Verwendung der Validierungskomponente |
---|
|
<?php
declare(strict_types=1);
namespace brandboxBrandbox\SampleCore\sampleSample\pluginPlugin\libLib\executeExecute {
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/');
});
}
}
}
?> |
...