Eingehende Daten sollen grundsätzlich validiert werden. Vertraue keinen Benutzereingaben. Da eingehende Daten typischerweise in der Datenbank gespeichert werden, stehen Constraints direkt im ORM zur im ORM zur Verfügung.
... per ORM
Alle Constraints die hier beschrieben sind, können in der diagram.json verwendet werden.
Codeblock |
theme |
---|
|
{
"identifier": "example",
"labels": {
"de": "Beispiel",
"en": "Example"
},
...
"constraints": [
"NotBlank()",
"Regex(\"/^{.*}/\")",
"Length(max=256)"
]
} |
...
Werden keine Eingabefehler festgestellt, kann das Objekt in der Callback-Methode verarbeitet werden. Wurden Eingabefehler ermittelt, werden violations an den Browser gesendet, die im Client verarbeitet werden können.
Codeblock |
---|
language | php | theme | RDark |
---|
title | Entity |
---|
|
namespace brandbox\your\plugin\lib\map {
use brandbox\component\basic_map;
use
/** @noinspection PhpUnusedAliasInspection */
Symfony\Component\Validator\Constraints
;
/**
*/
class someObject extends basic_map\mapEntityAbstract {
/**
* @var string
* @Constraints\NotBlank()
* @Constraints\Length(min=3)
*/
public $propertyA;
}
}
|
Codeblock |
---|
language | php | theme | RDark |
---|
title | Validierung |
---|
|
use brandbox\component\validator;
...
class engine extends plugin\lib\engineAbstract {
/**
* @param int $someObjectID
* @param array $params
* @return array|http\respond\invalid
*/
public function save($someObjectID, $params) {
$someObject = new lib\map\someObject();
$someObject->mapProperties($params);
return $this->validateValue(
$someObject,
$this->getApplicationLanguage(),
function($someObject) {
return true;
}
);
}
}
|
...
Wurden Eingabefehler ermittelt, werden violations an den Browser gesendet, die im Client verarbeitet werden können. Bei einem Fehler wie invalid-something
wird unter anderem auch der violation-Header x-brandbox-invalid-something
an den Client geschickt. Dort wird nach Elementen mit der class x-brandbox-invalid-something
gesucht und die class hide
vom Element genommen.
Codeblock |
---|
|
<div class="x-brandbox-invalid-something alert alert-warning hide">
Error message for invalid-something....
</div> |
...