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.