Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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.

theme
Codeblock
RDarktitleBeispiel
{
  "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
languagephpthemeRDark
titleEntity
  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
languagephpthemeRDark
titleValidierung
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
languagephpthemeRDark
<div class="x-brandbox-invalid-something alert alert-warning hide">
  Error message for invalid-something....
</div>

...