2017-02-28 4 views
0

여기에 기존의 코드입니다 :심포니 CheckboxType을 선택하지 않을 수

양식 유형으로 :

->add('isProcessor', CheckboxType::class,array('label' => 'As Processor', 'required'=>false)) 

법인 등 :

/** 
* @var boolean $isProcessor 
* 
* @ORM\Column(name="is_processor", type="boolean") 
* @Assert\NotBlank() 
*/ 
private $isProcessor; 

페이지로 : enter image description here

방법 이 문제가 발생할 수 있습니다.

  • 확인란을 선택하면, isProcessor이 확인란을 선택하지 않으면
  • 이 isProcessor 거짓해야 진정한해야

CheckboxType와 다른 매개 변수를이 있어야한다 만약 내가 양식을 구축하고 있지 않다 . 또는 값을 변환하기 위해 다른 코드를 추가해야합니다.

또한 수정 페이지에서 필드를 수정할 수 없습니다. 수정 페이지에서 체크 박스 요소를 사용하지 않도록 설정하는 방법은 없지만 만들기 페이지에서 사용 설정하는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

1

$ isProcessor에서 NotBlank 제약 조건을 제거해야한다고 생각합니다. 확인란을 선택하지 않으면 양식 값이 null이되고 부울 유형이 0으로 변환됩니다.

수정 페이지에서는 확인란 요소를 비활성화하지만 작성 페이지에서는 비활성화하려면 createForm 옵션을 사용할 수 있습니다. 컨트롤러에서

:

$form = $this->createForm(YourType::class, $yourData, [ 
      'isProcessorDisable' => true // or false 
     ]); 

양식 유형에서, 당신은 그런 식으로 뭔가를 할 수 있습니다

class YourType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $isProcessorDisable = $options['isProcessorDisable']; 
     $builder->add('isProcessor', CheckboxType::class, array(
      'label' => 'As Processor', 
      'required' => false, 
      'disabled' => $isProcessorDisable 
     )); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class'    => YourEntity::class, 
      'translation_domain'  => 'form', 
      'isProcessorDisable'  => false // Default value 
     ]); 
    } 
} 
+0

와우! 당신의 도움을 주셔서 대단히 감사합니다. 그것은 잘 작동합니다. 많은 많은 감사가 다시 있습니다. – Bob