public function testInit() { $this->assertCount(0, $this->context->getViolations()); $this->assertSame('Root', $this->context->getRoot()); $this->assertSame('foo.bar', $this->context->getPropertyPath()); $this->assertSame('Group', $this->context->getGroup()); $this->visitor->expects($this->once())->method('getGraphWalker')->will($this->returnValue('GRAPHWALKER')); // BC set_error_handler(array($this, "deprecationErrorHandler")); $this->assertNull($this->context->getCurrentClass()); $this->assertNull($this->context->getCurrentProperty()); $this->assertSame('GRAPHWALKER', $this->context->getGraphWalker()); $this->assertSame($this->metadataFactory, $this->context->getMetadataFactory()); restore_error_handler(); }
public static function validateFormChildren(FormInterface $form, ExecutionContext $context) { if ($form->getAttribute('cascade_validation')) { $propertyPath = $context->getPropertyPath(); $graphWalker = $context->getGraphWalker(); // Adjust the property path accordingly if (!empty($propertyPath)) { $propertyPath .= '.'; } $propertyPath .= 'children'; $graphWalker->walkReference($form->getChildren(), Constraint::DEFAULT_GROUP, $propertyPath, true); } }
/** * Validates the data of a form * * This method is called automatically during the validation process. * * @param FormInterface $form The validated form * @param ExecutionContext $context The current validation context */ public static function validateFormData(FormInterface $form, ExecutionContext $context) { if (is_object($form->getData()) || is_array($form->getData())) { $propertyPath = $context->getPropertyPath(); $graphWalker = $context->getGraphWalker(); // The Execute constraint is called on class level, so we need to // set the property manually $context->setCurrentProperty('data'); // Adjust the property path accordingly if (!empty($propertyPath)) { $propertyPath .= '.'; } $propertyPath .= 'data'; foreach (self::getFormValidationGroups($form) as $group) { $graphWalker->walkReference($form->getData(), $group, $propertyPath, true); } } }
public static function validateFormChildren(FormInterface $form, ExecutionContext $context) { if ($form->getAttribute('cascade_validation')) { $propertyPath = $context->getPropertyPath(); $graphWalker = $context->getGraphWalker(); // The Execute constraint is called on class level, so we need to // set the property manually $context->setCurrentProperty('children'); // Adjust the property path accordingly if (!empty($propertyPath)) { $propertyPath .= '.'; } $propertyPath .= 'children'; foreach (self::getFormValidationGroups($form) as $group) { $graphWalker->walkReference($form->getChildren(), $group, $propertyPath, true); } } }
/** * @param ExecutionContext $context * @return bool */ public function isValidCustomer(ExecutionContext $context) { // https://gist.github.com/888267 if (true === $this->known_customer) { $this->customer = $this->em->getRepository('AcmePizzaBundle:Customer')->findOneBy(array('phone' => $this->known_phone)); if (false === $this->customer instanceof Customer) { $property_path = $context->getPropertyPath() . '.known_phone'; $context->setPropertyPath($property_path); $context->addViolation('Phone number is not registered', array(), null); } } else { /* $context->setGroup('MyTest'); var_dump($context->getGroup()); */ $group = $context->getGroup(); $group = 'Customer'; $context->getGraphWalker()->walkReference($this->customer, $group, $context->getPropertyPath() . ".customer", true); } /* if (!($this->customer instanceof Customer)) { $context->addViolation('Invalid customer given', array(), $this->customer); } */ }
/** * Validates the data of this form * * This method is called automatically during the validation process. * * @param ExecutionContext $context The current validation context */ public function validateData(ExecutionContext $context) { if (is_object($this->getData()) || is_array($this->getData())) { $groups = $this->getValidationGroups(); $propertyPath = $context->getPropertyPath(); $graphWalker = $context->getGraphWalker(); if (null === $groups) { $groups = array(null); } // The Execute constraint is called on class level, so we need to // set the property manually $context->setCurrentProperty('data'); // Adjust the property path accordingly if (!empty($propertyPath)) { $propertyPath .= '.'; } $propertyPath .= 'data'; foreach ($groups as $group) { $graphWalker->walkReference($this->getData(), $group, $propertyPath, true); } } }
/** * @param ExecutionContext $ec */ public function validateCreation(ExecutionContext $ec) { if (null === $this->getHandle()) { $ec->getGraphWalker()->walkReference($this, 'create', $ec->getPropertyPath(), true); } }