Versionen im Vergleich

Schlüssel

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

...

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

Beispiel
Codeblock
titleBeispiel
{
  "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.

Entity
Codeblock
title
languagephpEntity
  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
Codeblock
languagephptitleValidierung
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.

...