typo3 пропустить рекурсивную проверку ObjectStorage - PullRequest
0 голосов
/ 26 августа 2018

у меня typo3 версия 8.7.17

У меня есть модель BookedDate со свойством availableDate со ссылкой на родительскую модель. Модель AvailableDate имеет свойство ObjectStorage BookedDates.

Моя проверка нарушена, поскольку существует рекурсивная проверка. Мне это не нужно Я прочитал много подобных проблем, но не нашел хорошего решения или чего-нибудь, что работает для меня.

Я пробовал и разные варианты с путями свойств:

   $this->arguments->getArgument($book)
        ->getPropertyMappingConfiguration()
        ->forProperty('date.bookedDates.*')
        ->skipProperties('bookedDate');

Мне нужно пропустить проверку для BookedDate.date.bookedDates

1 Ответ

0 голосов
/ 27 августа 2018

У меня была похожая проблема, но никто тоже ничего не ответил. TYPO3: удалить проверку из свойства ObjectStorage в модели

До сих пор мне удавалось удалить проверку из отдельного свойства отношений с помощью пользовательской функции:

public function removePropertyValidation($argument, $property)
    {
        if ($this->arguments->hasArgument($argument)) {
            /** @var \TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator */
            $conjunctionValidator = $this->arguments->getArgument($argument)->getValidator();
            //get all validators for argument
            foreach ($conjunctionValidator->getValidators() as $validator) {
                if ($validator instanceof ConjunctionValidator) {
                    foreach ($validator->getValidators() as $validators) {
                        //get all validators for property
                        if ($validators instanceof GenericObjectValidator) {
                            foreach ($validators->getPropertyValidators($property) as $propertyValidator) {
                                //remove only standard validator
                                if ($propertyValidator instanceof ConjunctionValidator) {
                                    foreach ($propertyValidator->getValidators() as $valid) {
                                        $propertyValidator->removeValidator($valid);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

Затем в вашем initializeActionдобавить:

$this->removePropertyValidation('book', 'date');
...