示例#1
0
 /**
  * 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()))));
 }
示例#3
0
 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) . "'");
     }
 }