2013-09-05 67 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' 
    ) 
));