/**
  * {@inheritdoc}
  */
 public function create($pollId)
 {
     $type = $this->formFactory->getType($this->type);
     $type->setPollFields($pollId);
     $builder = $this->formFactory->createNamedBuilder(sprintf('%s_%s', $this->name, $pollId), $type);
     return $builder->getForm();
 }
 /**
  * {@inheritdoc}
  */
 public function getForm($group)
 {
     $block = $this->getSubtree($group);
     $toAdd = array();
     $bc = $block->toBlockConfig();
     if (!$block->isEmpty()) {
         $sbc = array();
         /** @var $subblock GroupNodeDefinition */
         foreach ($block as $subblock) {
             $sbc += $subblock->toBlockConfig();
             if (!$subblock->isEmpty()) {
                 /** @var $field FieldNodeDefinition */
                 foreach ($subblock as $field) {
                     $field->replaceOption('block', $block->getName())->replaceOption('subblock', $subblock->getName());
                     $toAdd[] = $field;
                 }
             }
         }
         $bc[$block->getName()]['subblocks'] = $sbc;
     }
     $fb = $this->factory->createNamedBuilder($group, 'oro_config_form_type', null, array('block_config' => $bc));
     foreach ($toAdd as $field) {
         $this->addFieldToForm($fb, $field);
     }
     return $fb->getForm();
 }
示例#3
0
 /**
  * {@inheritdoc}
  */
 public function create($id)
 {
     $type = $this->formFactory->getType($this->type);
     $type->setId($id);
     $builder = $this->formFactory->createNamedBuilder($type, sprintf('%s_%s', $this->name, $id));
     return $builder->getForm();
 }
 /**
  * @param string $widget
  *
  * @return FormInterface
  * @throws InvalidArgumentException
  */
 public function getForm($widget)
 {
     if (!$this->hasForm($widget)) {
         throw new InvalidArgumentException(sprintf('Can\'t find form for widget "%s"', $widget));
     }
     $widgetConfig = $this->configProvider->getWidgetConfig($widget);
     $fields = $widgetConfig[static::FORM_FIELDS_KEY];
     $builder = $this->formFactory->createNamedBuilder($widget);
     foreach ($fields as $name => $config) {
         $field = new FieldNodeDefinition($name, $config);
         $builder->add($field->getName(), $config['type'], $field->getOptions());
     }
     return $builder->getForm();
 }
 /**
  * @return FormComponent
  */
 protected function createComponentForm()
 {
     $builder = $this->formFactory->createNamedBuilder($this->lookupPath('Nette\\Application\\UI\\Presenter'), $this->type, $this->entity, $this->options);
     $component = $this->formComponentFactory->create($builder->getForm());
     if ($this->theme) {
         $component->onCreateView[] = function ($view, $component) {
             $component->getRenderer()->setTheme($view, $this->theme);
         };
     }
     $component->onSuccess[] = function ($entity) {
         $this->processForm($entity);
     };
     return $component;
 }
示例#6
0
 public function testEmbedLabelPrefix()
 {
     $embedForm = $this->factory->createNamedBuilder($embedFormName = 'embed_form', FormType::class, null, ['label_prefix' => $embedLabelPrefix = 'embed_prefix'])->add($embedFieldName = 'embed_field');
     $form = $this->factory->createBuilder(FormType::class, null, ['label_prefix' => $labelPrefix = 'prefix'])->add($embedForm)->add($fieldName = 'field')->getForm()->submit([]);
     $view = $form->createView();
     $fieldView = $view->children[$fieldName];
     $embedFormView = $view->children[$embedFormName];
     $embedFieldView = $embedFormView->children[$embedFieldName];
     $this->assertArrayHasKey('label', $fieldView->vars);
     $this->assertSame($labelPrefix . '.' . $fieldName, $fieldView->vars['label']);
     $this->assertArrayHasKey('label', $embedFormView->vars);
     $this->assertSame($labelPrefix . '.' . $embedFormName, $embedFormView->vars['label']);
     $this->assertArrayHasKey('label', $embedFieldView->vars);
     $this->assertSame($embedLabelPrefix . '.' . $embedFieldName, $embedFieldView->vars['label']);
 }
 /**
  * @return FormComponent
  */
 protected function createComponentForm()
 {
     $builder = $this->formFactory->createNamedBuilder($this->lookupPath('Nette\\Application\\UI\\Presenter'), 'form', null, []);
     $builder->add('firstname');
     $builder->add('lastname');
     $builder->add('email');
     $builder->add('text');
     $component = $this->formComponentFactory->create($builder->getForm());
     $component->onSuccess[] = function (array $data) {
         // process data
         $this->getPresenter()->flashMessage('The form has been sucessfully sent.');
         $this->getPresenter()->redirect('this');
     };
     return $component;
 }
 /**
  * @throws \Symfony\Component\Form\Exception\UnexpectedTypeException
  *
  * @param $form
  * @param $basketElements
  */
 private function buildBasketElements($form, $basketElements)
 {
     if (null === $basketElements) {
         return;
     }
     if (!$basketElements instanceof \ArrayAccess && !is_array($basketElements)) {
         throw new UnexpectedTypeException($basketElements, 'array or \\ArrayAccess');
     }
     foreach ($basketElements as $basketElement) {
         $basketElementBuilder = $this->factory->createNamedBuilder($basketElement->getPosition(), 'form', $basketElement, array('property_path' => '[' . $basketElement->getPosition() . ']', 'auto_initialize' => false));
         $basketElementBuilder->setErrorBubbling(false);
         $provider = $basketElement->getProductProvider();
         $provider->defineBasketElementForm($basketElement, $basketElementBuilder);
         $form->add($basketElementBuilder->getForm());
     }
 }
 /**
  * {@inheritdoc}
  */
 public function getFormBuilder(FormFactoryInterface $factory)
 {
     if (!isset($this->formBuilder)) {
         $this->formBuilder = $factory->createNamedBuilder($this->getResourceProperty(), $this->getFormType(), null, $this->buildFormOptions());
     }
     return $this->formBuilder;
 }
示例#10
0
 /**
  * Returns a "add to basket" form for a specified product.
  *
  * @param ProductInterface $product A product instance
  *
  * @return FormView
  */
 public function getFormAddBasket(ProductInterface $product)
 {
     $formBuilder = $this->formFactory->createNamedBuilder('add_basket', 'form', null, array('data_class' => $this->basketElementClass, 'csrf_protection' => false));
     $this->productPool->getProvider($product)->defineAddBasketForm($product, $formBuilder, false);
     $form = $formBuilder->getForm()->createView();
     return $form;
 }
 /**
  * Gets the ACL roles form.
  *
  * @param \Sonata\AdminBundle\Util\AdminObjectAclData $data
  *
  * @return \Symfony\Component\Form\Form
  */
 public function createAclRolesForm(AdminObjectAclData $data)
 {
     $aclValues = $data->getAclRoles();
     $formBuilder = $this->formFactory->createNamedBuilder(self::ACL_ROLES_FORM_NAME, 'form');
     $form = $this->buildForm($data, $formBuilder, $aclValues);
     $data->setAclRolesForm($form);
     return $form;
 }
示例#12
0
 protected function initForm(FormFactoryInterface $factory, $data = null)
 {
     $builder = $factory->createNamedBuilder('subscriber', 'form', $data, array('data_class' => $this->getClassName()));
     $builder->add('email', 'email', array('label' => 'admin.subscriber.list.email'));
     $builder->add('created_at', 'date', array('label' => 'admin.subscriber.list.created_at', 'widget' => 'single_text'));
     $builder->add('active', 'checkbox', array('label' => 'admin.subscriber.list.active'));
     return $builder->getForm();
 }
示例#13
0
 /**
  * {@inheritdoc}
  */
 public function create($name, $type = null, array $options = array())
 {
     if (null === $type && null === $this->getDataClass()) {
         $type = 'text';
     }
     if (null !== $type) {
         return $this->factory->createNamedBuilder($name, $type, null, $options, $this);
     }
     return $this->factory->createBuilderForProperty($this->getDataClass(), $name, null, $options, $this);
 }
示例#14
0
 /**
  * Returns a form with defined parameters.
  *
  * @param  array $options
  *
  * @return Form
  */
 public function getForm($options = array())
 {
     $options['csrf_protection'] = false;
     $parameters = $this->getParameters();
     $builder = $this->factory->createNamedBuilder('', 'form', $parameters, $options);
     foreach ($parameters as $key => $value) {
         $builder->add($key, 'hidden');
     }
     return $builder->getForm();
 }
示例#15
0
 protected function initForm(FormFactoryInterface $factory, $data = null)
 {
     $builder = $factory->createNamedBuilder('news', 'form', $data, array('data_class' => $this->getClassName()));
     $builder->add('title', 'text', array('label' => 'admin.news.list.title'));
     $builder->add('date', 'date', array('label' => 'admin.news.list.date', 'widget' => 'single_text', 'required' => false));
     $builder->add('created_at', 'date', array('label' => 'admin.news.list.created_at', 'widget' => 'single_text'));
     $builder->add('visible', 'checkbox', array('label' => 'admin.news.list.visible', 'required' => false));
     $builder->add('creator_email', 'email', array('label' => 'admin.news.list.creator_email'));
     $builder->add('photo', 'fsi_image', array('label' => 'admin.news.list.photo'));
     $builder->add('tags', 'collection', array('type' => new TagType(), 'label' => 'admin.news.list.tags', 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false));
     return $builder->getForm();
 }
示例#16
0
 /**
  * {@inheritdoc}
  */
 public function create($name, $type = null, array $options = array())
 {
     if ($this->locked) {
         throw new FormException('The form builder cannot be modified anymore.');
     }
     if (null === $type && null === $this->getDataClass()) {
         $type = 'text';
     }
     if (null !== $type) {
         return $this->factory->createNamedBuilder($name, $type, null, $options, $this);
     }
     return $this->factory->createBuilderForProperty($this->getDataClass(), $name, null, $options, $this);
 }
示例#17
0
 /**
  * onPreSetData
  *
  * @param FormEvent $event
  *
  * @SuppressWarnings("PMD")
  */
 public function onPreSetData(FormEvent $event)
 {
     $data = $event->getData();
     $form = $event->getForm();
     if (null === $data) {
         return;
     }
     if (null === $data->getId()) {
         $form->add($this->factory->createNamed('filename', 'hidden', null, array('auto_initialize' => false)));
         $form->add($this->factory->createNamed('originalName', 'hidden', null, array('auto_initialize' => false)));
         $form->add($this->factory->createNamed('token', 'hidden', null, array('mapped' => false, 'auto_initialize' => false)));
     }
     if (null === $data || null === $data->getId()) {
         return;
     }
     $rootNode = $this->nodeProvider->getRootNode();
     $repository = $this->registry->getRepository('Erichard\\DmsBundle\\Entity\\DocumentNode');
     $allTree = $this->registry->getRepository('Erichard\\DmsBundle\\Entity\\DocumentNodeClosure')->createQueryBuilder('c')->select('d.id')->innerJoin('c.descendant', 'd')->where('c.ancestor = :id')->setParameter('id', $rootNode->getId())->getQuery()->getResult();
     $treeArray = array();
     foreach ($allTree as $tree) {
         $treeArray[] = $tree['id'];
     }
     $descendants = $this->registry->getRepository('Erichard\\DmsBundle\\Entity\\DocumentNodeClosure')->createQueryBuilder('c')->select('d.id')->innerJoin('c.descendant', 'd')->where('c.ancestor = :id')->setParameter('id', $data->getId())->getQuery()->getArrayResult();
     $descendants = array_map(function ($descendant) {
         return $descendant['id'];
     }, $descendants);
     $tree = $repository->getNodesHierarchyQueryBuilder(null, false, array('childSort' => array('field' => 'name', 'dir' => 'asc')), true);
     if (count($descendants) > 0) {
         $tree->andWhere('node.id NOT IN (:node_id)')->setParameter('node_id', $descendants);
     }
     $realTreeArray = array();
     foreach ($tree->getQuery()->getArrayResult() as $node) {
         if (in_array($node[0]['descendant']['id'], $treeArray)) {
             $realTreeArray[] = $node;
         }
     }
     $tree = $repository->buildTree($realTreeArray);
     // On met en place notre itérator en vue de retirer la profondeur de nos éléments
     $iterator = new \RecursiveIteratorIterator(new GedmoTreeIterator($tree), \RecursiveIteratorIterator::SELF_FIRST);
     $choices = array();
     foreach ($iterator as $node) {
         $nodeName = $node['name'];
         if ($node['id'] == $rootNode->getId()) {
             $nodeName = $this->registry->getContainer()->get('translator')->trans('home', array(), 'ErichardDmsBundle');
         }
         $depth = $iterator->getDepth();
         $choices[$node['id']] = str_repeat("   ", $depth) . $nodeName;
     }
     $form->add($this->factory->createNamedBuilder('node', 'choice', $data->getParent(), array('label' => 'move_document', 'required' => true, 'choices' => $choices, 'auto_initialize' => false))->addModelTransformer(new NodeToIdTransformer($this->registry))->getForm());
 }
示例#18
0
 function it_handles_form(Request $request, FormFactoryInterface $formFactory, FormBuilderInterface $formBuilder, FormInterface $form, FileBag $fileBag, ObjectManager $manager)
 {
     $formFactory->createNamedBuilder('', 'kreta_dummy_type', null, [])->shouldBeCalled()->willReturn($formBuilder);
     $formBuilder->getForm()->shouldBeCalled()->willReturn($form);
     $request->isMethod('POST')->shouldBeCalled()->willReturn(false);
     $request->isMethod('PUT')->shouldBeCalled()->willReturn(false);
     $request->isMethod('PATCH')->shouldBeCalled()->willReturn(true);
     $form->handleRequest($request)->shouldBeCalled()->willReturn($form);
     $form->isValid()->shouldBeCalled()->willReturn(true);
     $form->getData()->shouldBeCalled()->willReturn($this->object);
     $request->files = $fileBag;
     $manager->persist($this->object)->shouldBeCalled();
     $manager->flush()->shouldBeCalled();
     $this->handleForm($request)->shouldReturn($form);
 }
 /**
  * Creates named FormBuilder and populates it
  *
  * @param string $name
  * @param object $model data object
  * @param string $form view to generate
  * @param array $context
  * @return FormBuilderInterface
  */
 public function createNamedFormBuilder($name, $model, $form = 'default', $context = array())
 {
     $fb = $this->formFactory->createNamedBuilder($name, FieldTypeMapper::map('form'), $model);
     $this->populateFormBuilder($fb, $model, $form, $context);
     return $fb;
 }
 /**
  * Creates a new form.
  *
  * @return FormInterface
  */
 public function createForm()
 {
     $builder = $this->formFactory->createNamedBuilder($this->name, $this->type);
     return $builder->getForm();
 }
 /**
  * @param string $name
  * @param array  $options
  *
  * @return FormBuilder
  */
 public function getFormBuilder($name, array $options = array())
 {
     return $this->formFactory->createNamedBuilder($name, 'form', null, $options);
 }
 /**
  * {@inheritdoc}
  */
 public function createForm($data = null, $options = array())
 {
     $builder = $this->formFactory->createNamedBuilder($this->name, $this->type, $data, $options);
     return $builder->getForm();
 }
 /**
  * Creates a new form.
  *
  * @return FormInterface
  */
 public function createForm()
 {
     $builder = $this->formFactory->createNamedBuilder($this->name, $this->type, null, array('validation_groups' => array('OpenThread')));
     return $builder->getForm();
 }
 /**
  * Wrapping the original form factory method
  * @param int|string $name
  * @param string $type
  * @param null $data
  * @param array $options
  * @author Martin Schindler
  * @return FormBuilderInterface
  */
 public function createNamedBuilder($name, $type = 'form', $data = null, array $options = array())
 {
     return $this->formFactory->createNamedBuilder($name, $type, $data, $options);
 }
 /**
  * @param Payment $payment
  * @param TokenInterface $token
  *
  * @return FormBuilderInterface
  */
 protected function createPaymentFormBuilder(Payment $payment, TokenInterface $token = null)
 {
     return $this->formFactory->createNamedBuilder('', 'form', $payment, ['method' => 'POST', 'action' => $token ? $token->getTargetUrl() : null, 'data_class' => Payment::class, 'csrf_protection' => false, 'attr' => ['class' => 'payum-obtain-missing-details'], 'allow_extra_fields' => true]);
 }
示例#26
0
 protected function initForm(FormFactoryInterface $factory, $data = null)
 {
     $builder = $factory->createNamedBuilder('news', 'form', $data, array('data_class' => $this->getClassName()));
     return $builder->getForm();
 }
示例#27
0
 /**
  * Create Form Objects for column and rowset index.
  *
  * @param \FSi\Component\DataGrid\Column\ColumnTypeInterface $column
  * @param mixed $index
  * @param mixed $object
  * @return FormInterface
  */
 private function createForm(ColumnTypeInterface $column, $index, $object)
 {
     $formId = implode(array($column->getName(), $column->getId(), $index));
     if (array_key_exists($formId, $this->forms)) {
         return $this->forms[$formId];
     }
     //Create fields array. There are column types like entity where field_mapping
     //should not be used to build field array.
     $fields = array();
     switch ($column->getId()) {
         case 'entity':
             $field = array('name' => $column->getOption('relation_field'), 'type' => $this->isSymfony3() ? $this->getEntityTypeName() : 'entity', 'options' => array());
             $fields[$column->getOption('relation_field')] = $field;
             break;
         default:
             foreach ($column->getOption('field_mapping') as $fieldName) {
                 $field = array('name' => $fieldName, 'type' => null, 'options' => array());
                 $fields[$fieldName] = $field;
             }
     }
     //Pass fields form options from column into $fields array.
     $fieldsOptions = $column->getOption('form_options');
     foreach ($fieldsOptions as $fieldName => $fieldOptions) {
         if (array_key_exists($fieldName, $fields)) {
             if (is_array($fieldOptions)) {
                 $fields[$fieldName]['options'] = $fieldOptions;
             }
         }
     }
     //Pass fields form type from column into $fields array.
     $fieldsTypes = $column->getOption('form_type');
     foreach ($fieldsTypes as $fieldName => $fieldType) {
         if (array_key_exists($fieldName, $fields)) {
             if (is_string($fieldType)) {
                 $fields[$fieldName]['type'] = $fieldType;
             }
         }
     }
     //Build data array, the data array holds data that should be passed into
     //form elements.
     switch ($column->getId()) {
         case 'datetime':
             foreach ($fields as &$field) {
                 $value = $column->getDataMapper()->getData($field['name'], $object);
                 if (!isset($field['type'])) {
                     $field['type'] = $this->isSymfony3() ? $this->getDateTimeTypeName() : 'datetime';
                 }
                 if (is_numeric($value) && !isset($field['options']['input'])) {
                     $field['options']['input'] = 'timestamp';
                 }
                 if (is_string($value) && !isset($field['options']['input'])) {
                     $field['options']['input'] = 'string';
                 }
                 if ($value instanceof \DateTime && !isset($field['options']['input'])) {
                     $field['options']['input'] = 'datetime';
                 }
             }
             break;
     }
     if ($this->isSymfony3()) {
         $formBuilderOptions = array('entry_type' => $this->getRowTypeName(), 'csrf_protection' => false);
     } else {
         $formBuilderOptions = array('type' => new RowType($fields), 'csrf_protection' => false);
     }
     if ($this->isSymfony3()) {
         $formBuilderOptions['entry_options']['fields'] = $fields;
     }
     $formData = [];
     foreach (array_keys($fields) as $fieldName) {
         $formData[$fieldName] = $column->getDataMapper()->getData($fieldName, $object);
     }
     //Create form builder.
     $formBuilder = $this->formFactory->createNamedBuilder($column->getDataGrid()->getName(), $this->isSymfony3() ? $this->getCollectionTypeName() : 'collection', array($index => $formData), $formBuilderOptions);
     //Create Form.
     $this->forms[$formId] = $formBuilder->getForm();
     return $this->forms[$formId];
 }
 /**
  * @param FormFactoryInterface $formFactory
  * @param string $name
  */
 public function __construct(FormFactoryInterface $formFactory, $name = '')
 {
     $this->children = array();
     $this->formBuilder = $formFactory->createNamedBuilder($name);
 }
 /**
  * Creates a new form.
  *
  * @return FormInterface
  */
 public function createForm()
 {
     $builder = $this->formFactory->createNamedBuilder($this->name, $this->type, null, array('method' => 'PATCH'));
     return $builder->getForm();
 }
示例#30
0
 /**
  * {@inheritdoc}
  */
 public function createForm($object = null, array $formOptions = [])
 {
     return $this->formFactory->createNamedBuilder('', $this->fqcn, $object, $formOptions)->getForm();
 }