2013-11-04 4 views
4

이 내 엔티티 클래스의 일부입니다Symfony 2 양식 필드 라디오 필수 = false?

/** 
* @var integer 
* 
* @ORM\Column(name="student", type="integer", nullable=true) 
*/ 
private $student; 

내 폼 클래스의이 부분이이 출력

$builder 
    ->add('student', 'choice', ['label'=> false, 
    'expanded' => true, 
    'choices' => (Array)new StudentEnum(), 
    ]) 
     ; 

광고 :

<input id="xxxxx_0" type="radio" value="4" required="required" name="xxxxx[student]"> 
<label class="required" for="xxxxxV_student_0">Nie</label> 

...

내 문제는 내가 입력 한 태그가 특성을 가질 필요가 없다는 것입니다. llable = 엔티티에서 true입니다.

답변

16

이 솔루션이 필요 => 거짓과 empty_value => 거짓

$builder 
     ->add('student', 'choice', [ 
       'label'=> false, 
       'expanded' => true, 
       'choices' => (Array)new StudentEnum(), 
       'required' => false, 
       'empty_value' => false 
     ]); 
+5

이 솔루션은 Symfony 2.8까지는 좋은데, "empty_value"는 2.7에서는 더 이상 사용되지 않으므로 ("3.0"에서 제거됨) "placeholder"옵션을 사용해야합니다. –

4

으로는 다음 false로 설정해야하므로

required 
type: Boolean default: true 

required 옵션 기본값은 true로 설정 here을 설명했다.

builder->add('student', 'choice', array(
      'label'=> false, 
      'expanded' => true, 
      'required' => false, 
      //... 
    )) 
; 

또한,

이 검증에서 피상적이고 독립적이며 문서에서 읽을 수 있습니다. 기껏해야 Symfony 이 필드 유형을 추측하도록 한 경우이 옵션의 값은 유효성 정보에서 추측됩니다.

양식을 필수 값으로 설정하려면 필드가 필요하지 않아야한다는 사실을 고려하여 유효성 검사 규칙을 설정해야합니다.

This이 도움이 될 수 있습니다.

+0

내가이 전에 시도했다이 위에 여분의 라디오를 추가하고 나는 그것을 원하지 않는다. – user2156980

+0

그래, 그렇다면 업데이트를 확인하고 도움이되는지 알려주십시오. –

+0

* @Assert \ Choice (choices = {4,3,2,1, null})를 설정했지만 아무 것도 변경되지 않았습니다. – user2156980

0

심포니 3.0 empty_value 때문에 사용되지 않으며 대신 자리를 사용할 필요가있다 :

$builder 
     ->add(
       'student', 
       'choice', 
       [ 
       'label'=> false, 
       'expanded' => true, 
       'choices' => (Array)new StudentEnum(), 
       'required' => false, 
       'placeholder' => null 
       ] 
     );