Skip to content

Instantly share code, notes, and snippets.

@ogrosko
Created July 25, 2018 14:57
Show Gist options
  • Save ogrosko/9afbe8fc13e2ec3fca1fdbf95ed160fd to your computer and use it in GitHub Desktop.
Save ogrosko/9afbe8fc13e2ec3fca1fdbf95ed160fd to your computer and use it in GitHub Desktop.
Typo3 extbase conditional validation
/**
* Initialize action for submit action
*/
public function initializeSubmitAction()
{
if ($this->arguments->hasArgument('order') and $this->request->getArgument('order')['shipping']) {
$validatorResolver = $this->objectManager->get(ValidatorResolver::class);
$dynamicValidator = $validatorResolver->createValidator(GenericObjectValidator::class);
foreach ($this->request->getArgument('order')['shipping'] as $shippingMethod) {
switch ($shippingMethod) {
case PublicationOrder::SHIPPING_EMAIL:
$dynamicValidator->addPropertyValidator('email', $validatorResolver->createValidator('NotEmpty'));
break;
case PublicationOrder::SHIPPING_POST:
$dynamicValidator->addPropertyValidator('zip', $validatorResolver->createValidator('NotEmpty'));
$dynamicValidator->addPropertyValidator('street', $validatorResolver->createValidator('NotEmpty'));
$dynamicValidator->addPropertyValidator('streetNr', $validatorResolver->createValidator('NotEmpty'));
$dynamicValidator->addPropertyValidator('city', $validatorResolver->createValidator('NotEmpty'));
$dynamicValidator->addPropertyValidator('country', $validatorResolver->createValidator('NotEmpty'));
break;
}
}
$baseValidatorConjunction = $validatorResolver->getBaseValidatorConjunction(PublicationOrder::class);
$baseValidatorConjunction->addValidator($dynamicValidator);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment