2012-07-11 42 views
0

我在設置窗體包裝自定義ID時遇到問題。 $ options ['attr'] ['id']不似乎工作。傳遞給所有的CreateForm選項()方法似乎被忽略...... 我工作的Symfony 2.1 Beta 1的如何在Symfony2中自定義主窗體ID

形式設置:

$login_form = $this->createForm(new LoginType(), $user, array(
        'attr' => array(
         'id' => 'login-form'   
        ) 
       )); 

被傳遞給視圖:

{{ form_widget(login_form) }} 

但它產生:

<div id="login"> 
    <div> 
     <label class="required">Mobile</label> 
     <input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile"> 
    </div> 
    <div> 
     <label class="required">Password</label> 
     <input type="text" maxlength="255" required="required" name="login[password]" id="login_password"> 
    </div> 
</div> 

所以形式包裝具有ID = 「登錄」,插件的「登錄形式」

回答

1

TEAD我認爲它可以在窗體類來完成的方法:

public function getName() 
{ 
    return 'login-form'; 
} 

問候, 最大

+0

是的,但這並不能解決問題,而你有多種形式。這也將改變例如來自例如登錄['密碼'],登錄形式['密碼']。我只想改變html ID屬性 – 2012-07-11 12:39:27

+0

裏面的嵌入形式創建表單。 – 2012-07-15 19:26:06

1

這怎麼{{ form_widget(login_form) }}產生上面的代碼就像你說?

<div id="login"> 
    <div> 
     <label class="required">Mobile</label> 
     <input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile"> 
    </div> 
    <div> 
     <label class="required">Password</label> 
     <input type="text" maxlength="255" required="required" name="login[password]" id="login_password"> 
    </div> 
</div> 

{{ form_widget(login_form) }}應該只渲染此:

<div> 
     <label class="required">Mobile</label> 
     <input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile"> 
    </div> 
    <div> 
     <label class="required">Password</label> 
     <input type="text" maxlength="255" required="required" name="login[password]" id="login_password"> 

,隨着你的代碼ID =「登錄」分區不就沒有任何意義對我來說,它必須是您手動添加的格,所以你可以自己改變ID

+0

不,每個表格都包裹在div中(如果您使用div佈局)。每個簡單的表單輸入擴展形式。所以你從主窗體中獲得了一個DIV,從簡單的窗體中獲得了2個DIV – 2012-07-11 18:19:42

0

兩年後:) 你可以重寫AbstractType的setDefaultOptions方法。在Symfony 2.5中測試

class CommentType extends AbstractType 
    { 
     public function buildForm(FormBuilderInterface $builder, array $options) 
     { 

       $builder 
        ->setMethod('POST') 
        ->add('text', 'textarea', array('label' => ' ', 
         'attr' => array('class' => 'form-control', 
          'placeholder' => 'Your comment') 
        )) 
         ->add('folder_id', 'hidden', array('label' => ' ', 
         'attr' => array('class' => 'form-control', 
          'placeholder' => 'Your comment') 
        )) 
         ->add('link_id', 'hidden', array('label' => ' ', 
         'attr' => array('class' => 'form-control', 
          'placeholder' => 'Your comment') 
        )) 
        ->add('save', 'button', array('label' => 'Save', 
         'attr' => array('class' => 'btn-lg btn-primary') 
          ) 
        ); 
     } 

     public function setDefaultOptions(OptionsResolverInterface $resolver) 
     { 
      $resolver->setDefaults(array(
       'data_class' => 'Linkboard\FrontBundle\Document\comment', 
       'attr' => array('id' => 'comment-form') 
      )); 
     } 

     public function getName() 
     { 
      return 'comment'; 
     } 
    } 

生成類似於;

<form name="comment" method="post" action="" id="comment-form"> 
    ..... 
    </form> 
+0

問題是關於Symfony 2.1 :) – 2014-09-10 13:55:43

+0

:)兩年前還有人問到,但如果我仍然從Google找到問題,我認爲有人可以受益。 – Ugur 2014-09-10 14:51:04

相關問題