2014-04-30 2 views
0

라디오 버튼 상태에 따라 양식을 설정하고 싶지만 formEvents가 사용하는 것이 무엇이든간에 ... 값이 변경되지 않아 필드를 제거하거나 추가 할 수 없습니다 ...Symfony 동적 양식 라디오 버튼

)

$builder->addEventListener(
    FormEvents::PRE_SET_DATA, 
    function(FormEvent $event) use ($factory){ 
     $data = $event->getData(); 
     echo 'value :' .$data->radioAvatar; 
     if ($data->radioAvatar){ 
       $form = $event->getForm(); 
       $form->add('avatar'); 
      } 

} ;

ATM, 나는이 있습니다

활성 라디오가 무엇이든간에 새 필드가 표시되지 않습니다 (radioAvatar의 기본값은 0 임). 기본값은 1 따라서 경우, 필드 ... 내 제출 버튼 아래에 나타납니다

내 forminput : 라디오 버튼 그룹에서 표시 라디오 버튼에 방법에 따라 양식을 업데이트 할

$builder 
    ->add('name', 'text',array(
    'label' =>'Public name')) 
    ->add('radioAvatar', 'choice', array(
    'label' => 'Had you already sent a picture', 
    'choices' => array(
     0 => 'no', 
     1 => 'yes'), 
    'multiple' => false, 
    'expanded' => true)) 
    ->add('save', 'submit',array(
    'label'=> 'Update my profil', 
    'attr' => array('class' => 'btn btn-primary elemtopmarg'))) 
; 

이 가능합니까?

감사합니다.

답변

1

, 당신은 내가 내 질문을 해결하는 방법을 찾을 수 있습니다 (즉 내 모든 형태의 하나의 나뭇 가지에 표시되기 전에 ...)

을 새로운 특정 양식을 작성해야

2 행당 양식 행을 표시 한 다음 캡슐화 된 객체 (새 ObjectType())를 특정 div에 넣습니다. 라디오 버튼

4에 따라/hidding specifig 사업부를 보여주는 자바 스크립트를 삽입 : 그럼 당신은

3 필드 '실체')를 표시하기위한 다른 특정 사업부를 추가 컨트롤러를 적용.

나는 그렇게하는 것이 가장 좋은 방법이라고 생각하지 않습니다. 그러나 인터넷에서 좋은 것을 찾지 못했습니다. 더 나은 방법을 찾으면 저에게 연락하거나 연락하지 마십시오. :)

안부 인사,

0

나는 당신이 시도한 것과 비슷한 방식으로 양식을 수정했습니다. 내 코드에는 약간의 차이가 있습니다.

$builder->addEventListener(
     FormEvents::PRE_SET_DATA, 
     function(FormEvent $event) { 
      $form = $event->getForm(); 

      $data = $event->getData(); 
      if($data->getName() != NULL){ 
       $form->add('surname'); 
      } 
     } 
    ); 

이것은 저에게 효과적입니다. 당신은 ('이름'필드 아래에 내 경우) 라디오 버튼에서이 필드를 표시하려면

, 당신은 당신의 형태로이 작업을 수행 할 수 있습니다 :

$builder 
    ->add('name') 
    ->add('surname', 'hidden'); 

그리고 이상을 청취자에, 당신은 할 수 필드의 유형을 변경하십시오 :

$builder->addEventListener(
     FormEvents::PRE_SET_DATA, 
     function(FormEvent $event) { 
      $form = $event->getForm(); 

      $data = $event->getData(); 
      if($data->getName() != NULL){ 
       $field = $builder->get('surname'); 
       $field->setType('text'); 
      } 
     } 
    ); 

이 마지막 예제는 테스트되지 않았지만 작동해야한다고 생각합니다.

이 정보가 도움이되기를 바랍니다.

친절하게 제공합니다.

1 : 누군가가이 게시물을 발견하면

+0

안녕하세요 작동하지 않습니다. 문제는 다음과 같습니다. 라디오에서 값이 업데이트되지 않았는지 확인합니다. radioAvatar는 항상 0이므로 사용자의 선택에 따라 동적이 아닙니다. –