2013-09-05 65 views
44

我想在我的symfony2表单上定义一个id属性。表单标签上的Id属性symfony

我这个试图在我的树枝模板:

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

,但似乎不工作。

回答

85

你试过attr

{{ form_start(form, {'attr': {'id': 'form_person_edit'}}) }} 
+0

thx很多,它运作良好! – wonzbak

+0

非常欢迎!随时将我的答案标记为已接受;) – SirDerpington

20

注入传递到表单生成器的选项数组中的ID:

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' 
    ) 
));