Eingabevalidierung

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 Verfügung.

... per ORM

Alle Constraints die hier beschrieben sind, können in der diagram.json verwendet werden.

Beispiel
{ "identifier": "example", "labels": { "de": "Beispiel", "en": "Example" }, ... "constraints": [ "NotBlank()", "Regex(\"/^{.*}/\")", "Length(max=256)" ] }

... im Controller

Lesen Sie hier mehr.

Erstellen Sie ein Objekt und validieren Sie es wie im folgenden Beispiel gezeigt. 

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.

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; } }



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; } ); } }

Darstellung im Frontend

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.