Extbase - Validierung das Validator Objekt: Unterschied zwischen den Versionen
| Zeile 2: | Zeile 2: | ||
== Validatoren in eigener Extension (Übersicht) == | == Validatoren in eigener Extension (Übersicht) == | ||
In einer eigenen Extension lassen sich die Validatoren relativ einfach verwenden. | In einer eigenen Extension lassen sich die Validatoren relativ einfach verwenden. | ||
| + | |||
| + | # Im '''Modell''' bekommen die Properties die gewünschten '''Validierungen zugewiesen''' (über die Annotations) | ||
| + | # Falls nötig eigenen Validator schreiben | ||
Alle Validatoren '''erben die Funktion “validate()” und “getErrors()”''' von \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator. Als '''Rückgabe''' geben sie ein Array mit gut lesbarer '''Fehlermeldungen''' zurück oder einen '''leeren String''', falls die Validierung in Ordnung war: | Alle Validatoren '''erben die Funktion “validate()” und “getErrors()”''' von \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator. Als '''Rückgabe''' geben sie ein Array mit gut lesbarer '''Fehlermeldungen''' zurück oder einen '''leeren String''', falls die Validierung in Ordnung war: | ||
| Zeile 10: | Zeile 13: | ||
print_r( $validator->validate($email)->getErrors() ); | print_r( $validator->validate($email)->getErrors() ); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | == Quickstart == | ||
| + | === Validierungsarten in Extbase === | ||
| + | # '''Property Validation''' - validiert eine Eigenschaft eines Model (z.B. title). | ||
| + | # '''Object Validation''' validiert das gesamte Objekt, und zwar jedes Mal wenn eine Validierung stattfindet (z.B. Blog Objekt). | ||
| + | # '''Action Validation''' validiert den Input-Parameter einer Action, sobald die Action betreten wird, an der die Validierung angebracht wurde. Also i.d.R. wenn ein Formular abgesendet wurde. | ||
| + | |||
| + | === Wo, Wann und Was wird Validiert === | ||
| + | Es wird immer validiert, wenn eine Action betreten wird. außer wenn es aktiv durch eine Annotation unterbunden wird. | ||
| + | <syntaxhighlight lang="php"> | ||
| + | /** | ||
| + | * @ignorevalidation $blog | ||
| + | */ | ||
| + | public function addAction(\Lobacher\Simpleblog\Domain\Model\Blog ↩ | ||
| + | $blog) { | ||
| + | ... | ||
| + | </syntaxhighlight> | ||
| + | === Ordnerstruktur === | ||
| + | <pre> | ||
| + | - ExtensionOrdner | ||
| + | - Classes | ||
| + | -Validation | ||
| + | - Validator | ||
| + | - MyValidatorNameValidator.php | ||
| + | </pre> | ||
| + | |||
| + | === Validator erbt von von AbstractValidator === | ||
| + | z.B. (Extbase Buch) '''WordValidator.php''' | ||
| + | <syntaxhighlight lang="php"> | ||
| + | class WordValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator { | ||
| + | public function isValid($property) { | ||
| + | $max = $this->options['max']; | ||
| + | if (str_word_count($property, 0) <= $max) { | ||
| + | return TRUE; | ||
| + | } else { | ||
| + | $this->addError('Verringern Sie die Anzahl der Worte - es sind maximal '.$max.' erlaubt!', 1383400016); | ||
| + | return FALSE; | ||
| + | } } | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | Einzige zu implementierende Funktion bleibt isValid(). Liefert diese TRUE zurück, ist die Eigenschaft gültig, liefert sie FALSE zurück, ist sie ungültig. Die Eigenschaft selbst wird als Methodenparameter übergeben und steht dann innerhalb der Funktion zur Verfügung. | ||
| + | |||
| + | Achtung wird False zurückgegeben wird nur ein Fehler in den Queue eingetragen. Um das Umleiten etc. muß man sich selber kümmern. | ||
| + | |||
| + | == Validierung von zusammenhängenden Feldern == | ||
| + | == Validatoren in Extbase == | ||
| + | Auszug... | ||
<pre> | <pre> | ||
\TYPO3\CMS\Extbase\Validation\Validator\AlphanumericValidator | \TYPO3\CMS\Extbase\Validation\Validator\AlphanumericValidator | ||
Version vom 29. September 2015, 10:15 Uhr
Validatoren
Validatoren in eigener Extension (Übersicht)
In einer eigenen Extension lassen sich die Validatoren relativ einfach verwenden.
- Im Modell bekommen die Properties die gewünschten Validierungen zugewiesen (über die Annotations)
- Falls nötig eigenen Validator schreiben
Alle Validatoren erben die Funktion “validate()” und “getErrors()” von \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator. Als Rückgabe geben sie ein Array mit gut lesbarer Fehlermeldungen zurück oder einen leeren String, falls die Validierung in Ordnung war: z.B.
$email = 'john@malone.com'; // Hier testweise mal eine falsche E-Mail eingeben!
$validator = $this->objectManager->create('\TYPO3\CMS\Extbase\Validation\Validator\EmailAddressValidator');
print_r( $validator->validate($email)->getErrors() );
Quickstart
Validierungsarten in Extbase
- Property Validation - validiert eine Eigenschaft eines Model (z.B. title).
- Object Validation validiert das gesamte Objekt, und zwar jedes Mal wenn eine Validierung stattfindet (z.B. Blog Objekt).
- Action Validation validiert den Input-Parameter einer Action, sobald die Action betreten wird, an der die Validierung angebracht wurde. Also i.d.R. wenn ein Formular abgesendet wurde.
Wo, Wann und Was wird Validiert
Es wird immer validiert, wenn eine Action betreten wird. außer wenn es aktiv durch eine Annotation unterbunden wird.
/**
* @ignorevalidation $blog
*/
public function addAction(\Lobacher\Simpleblog\Domain\Model\Blog ↩
$blog) {
...
Ordnerstruktur
- ExtensionOrdner
- Classes
-Validation
- Validator
- MyValidatorNameValidator.php
Validator erbt von von AbstractValidator
z.B. (Extbase Buch) WordValidator.php
class WordValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator {
public function isValid($property) {
$max = $this->options['max'];
if (str_word_count($property, 0) <= $max) {
return TRUE;
} else {
$this->addError('Verringern Sie die Anzahl der Worte - es sind maximal '.$max.' erlaubt!', 1383400016);
return FALSE;
} }
}
Einzige zu implementierende Funktion bleibt isValid(). Liefert diese TRUE zurück, ist die Eigenschaft gültig, liefert sie FALSE zurück, ist sie ungültig. Die Eigenschaft selbst wird als Methodenparameter übergeben und steht dann innerhalb der Funktion zur Verfügung.
Achtung wird False zurückgegeben wird nur ein Fehler in den Queue eingetragen. Um das Umleiten etc. muß man sich selber kümmern.
Validierung von zusammenhängenden Feldern
Validatoren in Extbase
Auszug...
\TYPO3\CMS\Extbase\Validation\Validator\AlphanumericValidator \TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator \TYPO3\CMS\Extbase\Validation\Validator\DateTimeValidator \TYPO3\CMS\Extbase\Validation\Validator\DisjunctionValidator \TYPO3\CMS\Extbase\Validation\Validator\EmailAddressValidator \TYPO3\CMS\Extbase\Validation\Validator\FloatValidator \TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator \TYPO3\CMS\Extbase\Validation\Validator\IntegerValidator \TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator \TYPO3\CMS\Extbase\Validation\Validator\NumberRangeValidator \TYPO3\CMS\Extbase\Validation\Validator\NumberValidator \TYPO3\CMS\Extbase\Validation\Validator\ObjectValidatorInterface \TYPO3\CMS\Extbase\Validation\Validator\RawValidator \TYPO3\CMS\Extbase\Validation\Validator\RegularExpressionValidator \TYPO3\CMS\Extbase\Validation\Validator\StringLengthValidator \TYPO3\CMS\Extbase\Validation\Validator\StringValidator \TYPO3\CMS\Extbase\Validation\Validator\TextValidator