Атрибут id в теге формы Symfony

43

Я хотел бы определить атрибут id в своих symfony2-формах.

Я пробовал это в своем шаблоне ветки:

{{ form_start(form, {'id': 'form_person_edit'}) }}

Но это кажется неработоспособным.

Теги:
twig

3 ответа

78
Лучший ответ

Вы пробовали attr?

{{ form_start(form, {'attr': {'id': 'form_person_edit'}}) }}
  • 0
    спасибо, это работает хорошо!
  • 0
    Добро пожаловать! Не стесняйтесь пометить мой ответ как принятый;)
19

Ввести идентификатор в массив параметров, который передается в конструктор форм:

public function newAction(Request $request)
{
    // create a task and give it some dummy data for this example
    $task = new Task();
    $task->setTask('Write a blog post');
    $task->setDueDate(new \DateTime('tomorrow'));

    $form = $this->createFormBuilder($task, ['attr' => ['id' => 'task-form']])
        ->add('task', 'text')
        ->add('dueDate', 'date')
        ->add('save', 'submit', ['label' => 'Create Post'])
        ->getForm();

    return $this->render('AcmeTaskBundle:Default:new.html.twig', [
        'form' => $form->createView(),
    ]);
}

Или в виде формы:

class TaskType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('task')
            ->add('dueDate', null, ['widget' => 'single_text'])
            ->add('save', 'submit');
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'Acme\TaskBundle\Entity\Task',
            'attr' => ['id' => 'task-form']
        ]);
    }

    public function getName()
    {
        return 'task';
    }
}
2

Кроме того, я должен добавить к вышеупомянутым ответам, что вы можете сделать это в своем контроллере следующим образом:

$this->createForm(FormTypeInterFace, data, options);

Для образца - я сделал это так:

$this->createForm(registrationType::class, null, array(
    'action' => $this->generateUrl('some_route'), 
    'attr' => array(
        'id' => 'some_id', 
        'class' => 'some_class'
    )
));
  • 1
    Есть ли место, где эти входные объекты задокументированы?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню