Skip to content
This repository has been archived by the owner on Mar 1, 2023. It is now read-only.

Commit

Permalink
[!!!][TASK] Move field validation classes namespace
Browse files Browse the repository at this point in the history
The classes used for the field validation have been moved into the
`Validation/Field` folder.

The class name `Romm\Formz\Validation\Validator\AbstractValidator` has
been changed to `Romm\Formz\Validation\Field\AbstractFieldValidator`.

This is an effort to clean up the files structure and make the whole
application architecture more consistent.
  • Loading branch information
romm committed Aug 25, 2017
1 parent 3ca5335 commit bfec663
Show file tree
Hide file tree
Showing 30 changed files with 103 additions and 47 deletions.
Expand Up @@ -18,7 +18,7 @@
use Romm\Formz\Form\Definition\Field\Validation\Validator;
use Romm\Formz\Service\ArrayService;
use Romm\Formz\Service\ValidatorService;
use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Core\Utility\GeneralUtility;

/**
Expand Down Expand Up @@ -81,7 +81,7 @@ protected function processField($field)
foreach ($field->getValidators() as $validator) {
$validatorClassName = $validator->getClassName();

if (in_array(AbstractValidator::class, class_parents($validatorClassName))) {
if (in_array(AbstractFieldValidator::class, class_parents($validatorClassName))) {
$javaScriptCode[] = (string)$this->getInlineJavaScriptValidatorCode($field, $validator);
}
}
Expand Down Expand Up @@ -175,8 +175,8 @@ public function getJavaScriptValidationFiles()
foreach ($field->getValidators() as $validator) {
$validatorClassName = $validator->getClassName();

if (in_array(AbstractValidator::class, class_parents($validatorClassName))) {
/** @var AbstractValidator $validatorClassName */
if (in_array(AbstractFieldValidator::class, class_parents($validatorClassName))) {
/** @var AbstractFieldValidator $validatorClassName */
$this->javaScriptValidationFiles = array_merge($this->javaScriptValidationFiles, $validatorClassName::getJavaScriptValidationFiles());
}
}
Expand Down
2 changes: 1 addition & 1 deletion Classes/Controller/AjaxValidationController.php
Expand Up @@ -29,7 +29,7 @@
use Romm\Formz\Service\ContextService;
use Romm\Formz\Service\ExtensionService;
use Romm\Formz\Service\MessageService;
use Romm\Formz\Validation\DataObject\ValidatorDataObject;
use Romm\Formz\Validation\Field\DataObject\ValidatorDataObject;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Error\Error;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
Expand Down
8 changes: 4 additions & 4 deletions Classes/Exceptions/EntryNotFoundException.php
Expand Up @@ -23,7 +23,7 @@
use Romm\Formz\Form\FormInterface;
use Romm\Formz\Form\FormObject\FormObject;
use Romm\Formz\Form\FormObject\FormObjectFactory;
use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
use Romm\Formz\ViewHelpers\ClassViewHelper;
use Romm\Formz\ViewHelpers\FieldViewHelper;
use Romm\Formz\ViewHelpers\FormatMessageViewHelper;
Expand Down Expand Up @@ -337,11 +337,11 @@ final public static function ajaxControllerFieldNotFound($fieldName, FormObject
/**
* @code 1455272659
*
* @param string $key
* @param AbstractValidator $validator
* @param string $key
* @param AbstractFieldValidator $validator
* @return self
*/
final public static function errorKeyNotFoundForValidator($key, AbstractValidator $validator)
final public static function errorKeyNotFoundForValidator($key, AbstractFieldValidator $validator)
{
/** @var self $exception */
$exception = self::getNewExceptionInstance(
Expand Down
4 changes: 2 additions & 2 deletions Classes/Service/ValidatorService.php
Expand Up @@ -15,7 +15,7 @@

use Romm\Formz\Form\Definition\Field\Validation\Validator;
use Romm\Formz\Service\Traits\SelfInstantiateTrait;
use Romm\Formz\Validation\Validator\AbstractValidator as FormzAbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\Utility\ArrayUtility;
use TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator;
Expand Down Expand Up @@ -87,7 +87,7 @@ protected function getValidatorData(Validator $validator)
'acceptsEmptyValues' => $validatorProperties['acceptsEmptyValues']
];

if (in_array(FormzAbstractValidator::class, class_parents($validatorClassName))) {
if (in_array(AbstractFieldValidator::class, class_parents($validatorClassName))) {
$validatorData['formzValidator'] = true;
$validatorData['supportedMessages'] = $validatorProperties['supportedMessages'];
$validatorData['supportsAllMessages'] = $validatorProperties['supportsAllMessages'];
Expand Down
Expand Up @@ -11,7 +11,7 @@
* http://www.gnu.org/licenses/gpl-3.0.html
*/

namespace Romm\Formz\Validation\Validator;
namespace Romm\Formz\Validation\Field;

use Romm\Formz\Error\Error;
use Romm\Formz\Error\Notice;
Expand All @@ -20,9 +20,10 @@
use Romm\Formz\Form\FormInterface;
use Romm\Formz\Service\MessageService;
use Romm\Formz\Service\ValidatorService;
use Romm\Formz\Validation\DataObject\ValidatorDataObject;
use Romm\Formz\Validation\Field\DataObject\ValidatorDataObject;
use TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator;

abstract class AbstractValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator
abstract class AbstractFieldValidator extends AbstractValidator
{

/**
Expand Down
Expand Up @@ -11,7 +11,7 @@
* http://www.gnu.org/licenses/gpl-3.0.html
*/

namespace Romm\Formz\Validation\DataObject;
namespace Romm\Formz\Validation\Field\DataObject;

use Romm\Formz\Form\Definition\Field\Validation\Validator;
use Romm\Formz\Form\FormObject\FormObject;
Expand Down
3 changes: 2 additions & 1 deletion Classes/Validation/Validator/BetweenNumbersValidator.php
Expand Up @@ -13,9 +13,10 @@

namespace Romm\Formz\Validation\Validator;

use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Core\Utility\MathUtility;

class BetweenNumbersValidator extends AbstractValidator
class BetweenNumbersValidator extends AbstractFieldValidator
{
const OPTION_MINIMUM = 'minimum';
const OPTION_MAXIMUM = 'maximum';
Expand Down
3 changes: 2 additions & 1 deletion Classes/Validation/Validator/ContainsValuesValidator.php
Expand Up @@ -13,9 +13,10 @@

namespace Romm\Formz\Validation\Validator;

use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Core\Utility\GeneralUtility;

class ContainsValuesValidator extends AbstractValidator
class ContainsValuesValidator extends AbstractFieldValidator
{
const OPTION_VALUES = 'values';

Expand Down
3 changes: 2 additions & 1 deletion Classes/Validation/Validator/EmailValidator.php
Expand Up @@ -13,9 +13,10 @@

namespace Romm\Formz\Validation\Validator;

use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Core\Utility\GeneralUtility;

class EmailValidator extends AbstractValidator
class EmailValidator extends AbstractFieldValidator
{
const MESSAGE_DEFAULT = 'default';

Expand Down
3 changes: 2 additions & 1 deletion Classes/Validation/Validator/EqualsToFieldValidator.php
Expand Up @@ -14,9 +14,10 @@
namespace Romm\Formz\Validation\Validator;

use Romm\Formz\Exceptions\EntryNotFoundException;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Extbase\Reflection\ObjectAccess;

class EqualsToFieldValidator extends AbstractValidator
class EqualsToFieldValidator extends AbstractFieldValidator
{
const OPTION_FIELD = 'field';

Expand Down
6 changes: 3 additions & 3 deletions Classes/Validation/Validator/Form/FormValidatorExecutor.php
Expand Up @@ -23,8 +23,8 @@
use Romm\Formz\Form\Definition\Field\Validation\Validator;
use Romm\Formz\Form\FormObject\FormObject;
use Romm\Formz\Service\MessageService;
use Romm\Formz\Validation\DataObject\ValidatorDataObject;
use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
use Romm\Formz\Validation\Field\DataObject\ValidatorDataObject;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Error\Result;
use TYPO3\CMS\Extbase\Reflection\ObjectAccess;
Expand Down Expand Up @@ -222,7 +222,7 @@ protected function processFieldValidator(Field $field, Validator $validator)
$validatorResult = $validatorInstance->validate($fieldValue);
$validatorResult = MessageService::get()->sanitizeValidatorResult($validatorResult, $validator->getName());

if ($validatorInstance instanceof AbstractValidator
if ($validatorInstance instanceof AbstractFieldValidator
&& false === empty($validationData = $validatorInstance->getValidationData())
) {
$this->validationData[$fieldName] = ($this->validationData[$fieldName]) ?: [];
Expand Down
3 changes: 2 additions & 1 deletion Classes/Validation/Validator/IsIntegerValidator.php
Expand Up @@ -13,9 +13,10 @@

namespace Romm\Formz\Validation\Validator;

use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Core\Utility\MathUtility;

class IsIntegerValidator extends AbstractValidator
class IsIntegerValidator extends AbstractFieldValidator
{
const MESSAGE_DEFAULT = 'default';

Expand Down
3 changes: 2 additions & 1 deletion Classes/Validation/Validator/NumberLengthValidator.php
Expand Up @@ -13,9 +13,10 @@

namespace Romm\Formz\Validation\Validator;

use Romm\Formz\Validation\Field\AbstractFieldValidator;
use TYPO3\CMS\Core\Utility\MathUtility;

class NumberLengthValidator extends AbstractValidator
class NumberLengthValidator extends AbstractFieldValidator
{
const OPTION_MINIMUM = 'minimum';
const OPTION_MAXIMUM = 'maximum';
Expand Down
4 changes: 3 additions & 1 deletion Classes/Validation/Validator/RegexValidator.php
Expand Up @@ -13,7 +13,9 @@

namespace Romm\Formz\Validation\Validator;

class RegexValidator extends AbstractValidator
use Romm\Formz\Validation\Field\AbstractFieldValidator;

class RegexValidator extends AbstractFieldValidator
{
const MESSAGE_DEFAULT = 'default';

Expand Down
4 changes: 3 additions & 1 deletion Classes/Validation/Validator/RequiredValidator.php
Expand Up @@ -13,7 +13,9 @@

namespace Romm\Formz\Validation\Validator;

class RequiredValidator extends AbstractValidator
use Romm\Formz\Validation\Field\AbstractFieldValidator;

class RequiredValidator extends AbstractFieldValidator
{
const MESSAGE_DEFAULT = 'default';

Expand Down
4 changes: 3 additions & 1 deletion Classes/Validation/Validator/StringLengthValidator.php
Expand Up @@ -13,7 +13,9 @@

namespace Romm\Formz\Validation\Validator;

class StringLengthValidator extends AbstractValidator
use Romm\Formz\Validation\Field\AbstractFieldValidator;

class StringLengthValidator extends AbstractFieldValidator
{
const OPTION_MINIMUM = 'minimum';
const OPTION_MAXIMUM = 'maximum';
Expand Down
2 changes: 1 addition & 1 deletion Documentation/04-DeveloperManual/PHP/Index.rst
Expand Up @@ -21,7 +21,7 @@ To create a form, you will have to use the following classes:

- :ref:`developerManual-php-validator`

:php:`Romm\Formz\Validation\Validator\AbstractValidator` — must be inherited by your validators.
:php:`Romm\Formz\Validation\Field\AbstractFieldValidator` — must be inherited by your validators.

- :ref:`developerManual-php-behaviour`

Expand Down
4 changes: 2 additions & 2 deletions Documentation/04-DeveloperManual/PHP/Validator.rst
Expand Up @@ -9,7 +9,7 @@ Validators are used to check the values of the fields submitted with a form. The

To configure the usable validators in the forms configuration, read the chapter “:ref:`usersManual-typoScript-configurationValidators`”.

You have the possibility to create your own validators depending on your needs; make sure that they inherit ``Romm\Formz\Validation\Validator\AbstractValidator``, and use correctly the functions from the API.
You have the possibility to create your own validators depending on your needs; make sure that they inherit ``Romm\Formz\Validation\Field\AbstractFieldValidator``, and use correctly the functions from the API.

API
^^^
Expand Down Expand Up @@ -214,7 +214,7 @@ You can find below a validator example.
<?php
namespace Romm\Formz\Validation\Validator;
use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
class ContainsValuesValidator extends AbstractValidator {
/**
Expand Down
2 changes: 1 addition & 1 deletion Documentation/07-CheatSheets/PhpCheatSheet.rst
Expand Up @@ -193,7 +193,7 @@ Form validator
Validators
----------

* It is advised to use validators which inherit :php:`Romm\Formz\Validation\Validator\AbstractValidator`; the main reason for that is to be able to use the property :php:`$javaScriptValidationFiles` (see line 4). Otherwise, basic Extbase validators work;
* It is advised to use validators which inherit :php:`Romm\Formz\Validation\Field\AbstractFieldValidator`; the main reason for that is to be able to use the property :php:`$javaScriptValidationFiles` (see line 4). Otherwise, basic Extbase validators work;
* Can associate JavaScript files with the property :php:`$javaScriptValidationFiles`: these files contain a code adaptation of the validator in JavaScript (see line 10);
* Can define messages which may be overridden in TypoScript with the property :php:`$supportedMessages` (see line 25);
* Also contains all basic Extbase validators features, like the property :php:`$supportedOptions` (see line 17).
Expand Down
@@ -0,0 +1,43 @@
.. include:: ../../../Includes.txt

=================================================
Breaking: Move field validation classes namespace
=================================================

Description
===========

The classes used for the field validation have been moved into the `Validation/Field` folder.

The class name :php:`Romm\Formz\Validation\Validator\AbstractValidator` has been changed to :php:`Romm\Formz\Validation\Field\AbstractFieldValidator`.

This is an effort to clean up the files structure and make the whole application architecture more consistent.

Impact
======

The class :php:`Romm\Formz\Validation\Validator\AbstractValidator` has been moved to :php:`Romm\Formz\Validation\Field\AbstractFieldValidator`, meaning field validators that do extend this class must change the used namespace.

**Example:**

.. code-block:: php
:linenos:
:emphasize-lines: 4,13
// OLD:
namespace Vendor\MyExtension\Validation\Validator;
use Romm\Formz\Validation\Validator\AbstractValidator;
class MyCustomFieldValidator extends AbstractValidator
{
}
// NEW:
namespace Vendor\MyExtension\Validation\Validator\Form;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
class MyCustomFormValidator extends AbstractFieldValidator
{
}
Expand Up @@ -21,7 +21,7 @@ Pour installer un formulaire, vous serez amené à utiliser les classes suivante

- :ref:`developerManual-php-validator`

:php:`Romm\Formz\Validation\Validator\AbstractValidator` — devra être héritée par vos validateurs.
:php:`Romm\Formz\Validation\Field\AbstractFieldValidator` — devra être héritée par vos validateurs.

- :ref:`developerManual-php-behaviour`

Expand Down
Expand Up @@ -9,7 +9,7 @@ Les validateurs sont utilisés pour vérifier la valeur des champs envoyés à l

Pour configurer les validateurs utilisables dans la configuration des formulaires, consultez le chapitre « :ref:`usersManual-typoScript-configurationValidators` ».

Vous avez la possibilité de créer vos propres validateurs selon vos besoins ; veillez à ce qu'ils aient comme parent ``Romm\Formz\Validation\Validator\AbstractValidator``, et à utiliser correctement les fonctions de l'API.
Vous avez la possibilité de créer vos propres validateurs selon vos besoins ; veillez à ce qu'ils aient comme parent ``Romm\Formz\Validation\Field\AbstractFieldValidator``, et à utiliser correctement les fonctions de l'API.

API
^^^
Expand Down Expand Up @@ -214,7 +214,7 @@ Vous retrouverez ci-dessous un exemple de validateur.
<?php
namespace Romm\Formz\Validation\Validator;
use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;
class ContainsValuesValidator extends AbstractValidator {
/**
Expand Down
Expand Up @@ -193,7 +193,7 @@ Validateur de formulaire
Validateurs
-----------

* Il est conseillé d'utiliser des validateurs qui héritent de :php:`Romm\Formz\Validation\Validator\AbstractValidator` ; la principale raison est l'utilisation de la propriété :php:`$javaScriptValidationFiles` (cf. ligne 4). Sinon les validateurs « classiques » d'Extbase fonctionnent ;
* Il est conseillé d'utiliser des validateurs qui héritent de :php:`Romm\Formz\Validation\Field\AbstractFieldValidator` ; la principale raison est l'utilisation de la propriété :php:`$javaScriptValidationFiles` (cf. ligne 4). Sinon les validateurs « classiques » d'Extbase fonctionnent ;
* Peut associer des fichiers JavaScript avec la propriété :php:`$javaScriptValidationFiles` : ces fichiers contiendront une adaptation du code de validation en JavaScript (cf. ligne 10) ;
* Peut définir des messages qui pourront être surchargés en TypoScript grâce à la propriété :php:`$supportedMessages` (cf. ligne 25) ;
* Contient également toutes les fonctionnalités des validateurs « classiques » d'Extbase, comme la propriété :php:`$supportedOptions` (cf. ligne 17).
Expand Down
4 changes: 2 additions & 2 deletions Tests/Fixture/Validation/Validator/DummyValidator.php
@@ -1,9 +1,9 @@
<?php
namespace Romm\Formz\Tests\Fixture\Validation\Validator;

use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;

class DummyValidator extends AbstractValidator
class DummyValidator extends AbstractFieldValidator
{
const MESSAGE_1 = 'message1';

Expand Down
@@ -1,9 +1,9 @@
<?php
namespace Romm\Formz\Tests\Fixture\Validation\Validator;

use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;

class ExceptionDummyValidator extends AbstractValidator
class ExceptionDummyValidator extends AbstractFieldValidator
{
/**
* @param mixed $value
Expand Down
4 changes: 2 additions & 2 deletions Tests/Fixture/Validation/Validator/MessagesValidator.php
@@ -1,9 +1,9 @@
<?php
namespace Romm\Formz\Tests\Fixture\Validation\Validator;

use Romm\Formz\Validation\Validator\AbstractValidator;
use Romm\Formz\Validation\Field\AbstractFieldValidator;

class MessagesValidator extends AbstractValidator
class MessagesValidator extends AbstractFieldValidator
{
const MESSAGE_1 = 'message1';
const MESSAGE_2 = 'message2';
Expand Down
Expand Up @@ -26,7 +26,7 @@ public function checkLocalizationIsInitializedCorrectly()
$field = $assetHandlerFactory->getFormObject()->getDefinition()->getField('foo');
$validator = $field->addValidator('validation-name', RequiredValidator::class);

/** @var LocalizationJavaScriptAssetHandler|\PHPUnit_Framework_MockObject_MockObject $assetHandler */
/** @var LocalizationJavaScriptAssetHandler|\PHPUnit_Framework_MockObject_MockObject $assetHandler */
$assetHandler = $this->getMockBuilder(LocalizationJavaScriptAssetHandler::class)
->setMethods(['handleRealTranslations', 'handleTranslationsBinding'])
->setConstructorArgs([$assetHandlerFactory])
Expand Down

0 comments on commit bfec663

Please sign in to comment.