2012-07-11 1 views
0

양식 래퍼 사용자 정의 ID를 설정하는 데 문제가 있습니다. $ options [ 'attr'] [ 'id'] 작동하지 않는 것 같습니다. 의 CreateForm에 전달되는 모든 옵션() 메서드는 내가 심포니 2.1 베타에서 일하고 있어요 ... 무시 될 것으로 보인다 1Symfony2에서 기본 폼 ID를 사용자 정의하는 방법

양식 설정 :

{{ form_widget(login_form) }} 
: 뷰에 전달

$login_form = $this->createForm(new LoginType(), $user, array(
        'attr' => array(
         'id' => '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

그래,하지만 여러 가지 양식이있는 경우 문제가 해결되지는 않습니다. 또한 이름 접두어가 예 : 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) }} 렌더링해야에만이 :

나에게 어떤 의미를하지 않습니다 코드에서 ID = "로그인"로 div에
<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를 직접 변경할 수 있습니다.

+0

아니요, 모든 양식이 div로 싸여 있습니다 (div 레이아웃을 사용하는 경우). 모든 간단한 양식 입력은 양식을 확장합니다. 따라서 간단한 양식의 내부에서 DIV와 DIV 두 개를 얻을 수 있습니다. –

0

2 년 후 : 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에 관한 질문 : –

+0

:) 2 년 전에도 질문을 받았지만 여전히 Google의 질문을 받으면 누군가에게 도움이 될 것이라고 생각했습니다. – Ugur