Versionen im Vergleich

Schlüssel

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

...

Untergeordnete Seiten (Anzeige untergeordneter Seiten)
alltrue
depth1
styleh3
sorttitle

Konfiguration

Validierungskriterien müssen entweder über den Programmcode oder die Datenmodellierung definiert werden. In allen Fällen ist die Syntax für ein Kriterium zu befolgen.

...

Codeblock
languagephp
titleKriterien pro Datenbankspalte
<?php

declare(strict_types=1);

/**
 
 * In diesem Beispiel wird die Klasseneigenschaft $property 
   * mit drei Kriterien für die Validierung versehen.
   *
   * 1. NotBlank() erfordert einen gültigen Wert in $property. 
   *               Werte welche null entsprechen sind verboten.
 
 * 2. Length(...) erfordert das der Wert mindesten 3 und  
  *                maximal 255 Zeichen umfassen darf. 
   *                Ein Wert welcher null entspricht ist 
   *                ohne NotBlank() ebenfalls gültig.
   * 3. Regex(...) legt einen regulären Ausdruck fest welcher 
   *               mit dem Wert von $property geprüft wird. 
   *               Sollte der Wert null entsprechenden wird 
 
 *               er ohne NotBlank() als gültig angesehen.
   */



namespace brandboxBrandbox\SampleCore\sampleSample\pluginPlugin\libLib\entityEntity {

    	use brandboxBrandbox\Framework\componentComponent\doctrineDoctrine;

    	/**
	     * [Deklaration als Doctrine-Entity]
   	  */
    	class sampleSample extends doctrineDoctrine\libDefinition\entityAbstractEntityAbstract
	{

      		/**
       * @var string
       *
       * 		 * @constraint NotBlank()
       		 * @constraint Length(min=3, max=255)
       		 * @constraint Regex(pattern="/^[a-z]+$/Ui")
       *
       		 *
		 * [@Column...-Deklaration]
       		 */
      public		public string $property = 'example';

    	}

  }

?>


Codeblock
languagephp
titleEin benutzerdefiniertes Kriterium für ein Datenbankobjekt
<?php

declare(strict_types=1);

/**
 
 * In diesem Beispiel wird eine Validierungsmethode für das Datenbankobjekt definiert.
   * Wird eine Validierung auf diesem Objekt ausgeführt wird die Methode callback() aufgerufen.
 
 * Dort findest eine speziell für dieses Datenbankobjekt erforderliche Prüfung statt.

  * Im Fehlerfall wird eine entsprechende Fehlermeldung erzeugt.
 
 */

  namespace brandboxBrandbox\SampleCore\sampleSample\pluginPlugin\libLib\entityEntity {

    	use brandboxBrandbox\Framework\componentComponent\doctrineDoctrine;

    	use /** @noinspection PhpUnusedAliasInspection */ Symfony\Component\Validator\Constraints;
    	use Symfony\Component\Validator\Context\ExecutionContextInterface;

    	/**
 	    * [Deklaration als Doctrine-Entity]
    	 */
    	class sampleSample extends doctrineDoctrine\libDefinition\entityAbstractEntityAbstract 
	{

      		/**
       * @var string
       *
       		 * [@Column...-Deklaration]
       		 */
      public 		public string $username;

      		/**
      		 * @var string
       *
       * [@Column...-Deklaration]
       		 */
      public		public string $password;

      		/**
       * @var string
       *        * [@Column...-Deklaration]
         */
		public  string    public $email;

      		/**
       		 * @Constraints\Callback
       *
       * @param ExecutionContextInterface $context
       *
       * @return void
       */
      		 */
		public function callback(ExecutionContextInterface $context): {void 
        		{
			$required = $this->username . '@example.com';

       			if(0 !== strcmp($required, $this->email)): 
          $context
             {
				$context
					->buildViolation('You must provide a correct email address.')
             					->atPath('email')
             					->addViolation()
          ;

        endif;

      }

    }

  }

?>				;
			}
		}
	}
}

Verwendung

Hauptsächlich wird dieses Plugin genutzt um Datenbankobjekte zu validieren. Es kann allerdings auch auf andere Klassenobjekte angewendet werden. Um ein Objekt zu validieren kann folgender Code genutzt werden.

Codeblock
languagephp
titleVerwendung der Validierungskomponente
<?php

declare(strict_types=1);

namespace brandboxBrandbox\SampleCore\sampleSample\pluginPlugin\libLib\executeExecute {

    use brandbox\admin\plugin;

    use brandbox\component\http;
    use brandbox\component\doctrine;
    use brandbox\component\validator;

    /**
     * @author Max Mustermann <mustermann@example.com>
     */
    class example extends plugin\lib\executeAbstract {

      use validator\validatorTrait;

      /**
       * @param doctrine\lib\entityAbstract $entity
       *
       * @return http\response\responseAbstract
       */
      public function execute($entity) {

        $locale = $this->getApplicationLanguage();

        return $this->validateValue($entity, $locale, function() use ($entity) {

          $entity->save();

          return new http\response\location('http://example.com/');

        });

      }

    }

  }

?>

...