/** * Adds a CSRF field to the form when the CSRF protection is enabled. * * @param FormBuilderInterface $builder The form builder * @param array $options The options */ public function buildForm(FormBuilderInterface $builder, array $options) { if (!$options['csrf_protection']) { return; } $builder->addEventSubscriber(new CsrfValidationListener($options['csrf_field_name'], $options['csrf_token_manager'], $options['csrf_token_id'] ?: ($builder->getName() ?: get_class($builder->getType()->getInnerType())), $options['csrf_message'], $this->translator, $this->translationDomain)); }
/** * Adds a CSRF field to the form when the CSRF protection is enabled. * * @param FormBuilderInterface $builder The form builder * @param array $options The options */ public function buildForm(FormBuilderInterface $builder, array $options) { if (!$options['csrf_protection']) { return; } $builder->setAttribute('csrf_factory', $builder->getFormFactory())->addEventSubscriber(new CsrfValidationListener($options['csrf_field_name'], $options['csrf_provider'], $options['intention'] ?: ($builder->getName() ?: get_class($builder->getType()->getInnerType())))); }
public function buildForm(FormBuilderInterface $builder, array $options) { // Creatd with createNamed('', ...) so likely an API request, might // need to make this a little better in the future $buildTabs = $builder->getName() === '' ? false : $options['build_tabs']; $tabsData = $options['tabs_data']; $formType = $builder->getType()->getInnerType(); $tabDefaults = ['inherit_data' => true]; foreach ($tabsData as $name => $data) { $tabOptions = array_merge($tabDefaults, $data); $forceTab = isset($data['force_tab']) ? $data['force_tab'] : false; // Remove unused option if ($forceTab) { unset($tabOptions['force_tab']); } // Build Tab if ($buildTabs || $forceTab) { $parent = $builder->create($name, 'tab', $tabOptions); $builder->add($parent); // Just add it to the main form } else { $parent = $builder; } // Get method name $method = sprintf('build%sForm', ucfirst($name)); if (!method_exists($formType, $method)) { throw new \InvalidArgumentException(sprintf('Method "%s" does not exist in "%s"', $method, get_class($formType))); } // call buildTabNameForm call_user_func([$formType, $method], $parent, $options, $builder->getData()); } }
/** * @param \Symfony\Component\Form\FormBuilderInterface $formBuilder * * @return array */ protected function getTypes(FormBuilderInterface $formBuilder) { $types = array(); for ($type = $formBuilder->getType(); null !== $type; $type = $type->getParent()) { array_unshift($types, $type->getInnerType()); } return $types; }
/** * Assert that the form element has an inner type of type $typeClass and * the specified options with their values. * * @param FormBuilderInterface $element * @param string $typeClass FQN class * @param array $options keys are option names, values the * expected option values */ private function assertFormType(FormBuilderInterface $element, $typeClass, array $options) { $type = $element->getType()->getInnerType(); $this->assertInstanceOf($typeClass, $type); foreach ($options as $option => $expected) { $this->assertEquals($expected, $element->getOption($option), "Option '{$option}' does not have the expected value '" . serialize($expected) . "'"); } }