2012-07-11 2 views
0

У меня проблемы с установкой формы обертки пользовательского идентификатора. $ options ['attr'] ['id'] не работает. Все параметры, передаваемые CreateForm() метод, как представляется, игнорируются ... Я работаю на Symfony 2.1 бета 1Как настроить основной идентификатор формы в Symfony2

установки Форма:

$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> 

Так форма обертка имеет идентификатор = "логин", модули TEAD «Логин-формы»

ответ

1

Я думаю, что это может быть сделано в виде класса в методе:

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

С уважением, Max

+0

Да, но это не решает проблему, пока у вас есть несколько форм. Также это изменит префикс имени, например. login ['password'], login_form ['password']. Я хочу только изменить атрибут html ID –

+0

создать форму с встроенными формами внутри. –

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"> 

Это Div с идентификатором = «входа» в вашем коде нет, не имеет смысла для меня, это должно быть вам, что добавлены вручную, что DIV , так что вы можете самостоятельно изменить идентификатор

+0

Нет, каждая форма завернута в div (если вы используете макет div). Форма ввода всех простых форм расширяется. Итак, у вас есть один DIV из основной формы и 2 DIVs внутри от простых виджетов –

0

Через два года :) Вы можете переопределить метод setDefaultOptions AbstractType. Протестировано в 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 :) –

+0

:) Также он был задан два года назад, но если я все еще найду вопрос от Google, я подумал, что кто-то может принести пользу. – Ugur

Смежные вопросы