Symfony2 비활성화 선택

omgitsdrobinoha

Symfony2에서 동적 양식을 구현하려고합니다. 양식은 간단합니다. 먼저 사용자가 브로커를 선택한 다음 해당 브로커에 따라 계정을 선택합니다. 따라서 브로커를 선택할 때까지 계정이 비활성화됩니다.

텍스트 입력의 경우 read_only => true솔루션이 될 수 있지만 select에는 읽기 전용 속성이 없습니다. 그래서 나는 선택을 비활성화하고 jQuery로 선택을 활성화하려고했습니다.

$('#form select').prop('disabled', false);

문제는 서버 측에서 Symfony가 비활성화 된 양식 필드를 처리 할 수 ​​없다는 것입니다. 값은 단순히 null로 설정됩니다.

가능한 해결책을 생각했습니다. 우선, 폼 필드 값이 실제로 요청 매개 변수에 있는지 테스트했기 때문에 컨트롤러에서 필드 값을 수동으로 설정할 수 있었기 때문에 Symfony는이를 처리하고 객체에 매핑하기 만하면됩니다. 나는 그것이 작동 할 것이라고 생각하지만 그것은 정말로 좋은 해결책이 아닙니다.

둘째, 일부 클라이언트 측 해킹으로 선택을 비활성화하거나 양식에 숨겨진 입력을 추가하고 Javascript로 수동으로 값을 설정할 수 있습니다.

여기에 표준 솔루션이 있습니까?

내 양식 엔터티는 다음과 같습니다.

$builder->add('broker', 'entity', array(
    'class'         => 'MyBundle:Broker',
    'property'      => 'name',
    'query_builder' => function(BrokerRepository $br) {
                           return $br->getActiveBrokersQuery();
                       },
    'required'      => true,
    'empty_value'   => 'Choose a broker',
));

$builder->add('accountType', 'entity', array(
    'class'       => 'MyBundle:AccountType',
    'empty_value' => 'Choose a broker first',
    'disabled'    => true,
));

선택을 비활성화하지 않으면 모든 것이 잘 작동하고 Symfony는 요청을 완벽하게 처리합니다.

omgitsdrobinoha

나는 hakre의 제안에 따라 문제를 해결했습니다. 그래서 필드가 더 이상 비활성화되지 않는다는 것을 양식에 알려야했습니다. 따라서 양식에 PRE_SUBMIT 이벤트를 추가하여 accountType 필드에서 disabled 값을 false로 설정했습니다.

$builder->addEventListener(
            FormEvents::PRE_SUBMIT,
            function(FormEvent $event) {
                $event->getForm()->add('accountType', 'entity', array(
                    'class' => 'XXBundle:AccountType',
                    'empty_value' => 'Choose a broker first',
                    'disabled' => false
                ));
            }
        );

제안 해 주셔서 감사합니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

선택한 값에 따라 select2 옵션 비활성화

분류에서Dev

Zend Framework 2에서 일부 옵션 선택 비활성화

분류에서Dev

Angular 2 데이터 선택기 비활성화

분류에서Dev

sifter 비활성화 선택

분류에서Dev

선택 1이 mysql없이 선택 2보다 큰 경우 값 비활성화 / 제거

분류에서Dev

angular2 보조 선택 요소에서 선택 옵션 제거 또는 비활성화

분류에서Dev

적성-선택 저장 비활성화

분류에서Dev

Symfony2 Form Builder-DB 쿼리에서 선택 배열 생성

분류에서Dev

Symfony2에서 로그인 비활성화

분류에서Dev

ConEmu 복사 선택 비활성화

분류에서Dev

jQuery, onclick 및 비활성화 선택

분류에서Dev

선택 옵션 비활성화

분류에서Dev

선택된 필드 비활성화

분류에서Dev

TreeView에서 선택 비활성화

분류에서Dev

JS-선택 요소 비활성화

분류에서Dev

ToggleButton 선택 색상 비활성화

분류에서Dev

Swift 3 : UITableViewCell 비활성화 선택 스타일도 선택 비활성화

분류에서Dev

QTableWidget에서 행 선택시 QPushButton 활성화 / 비활성화

분류에서Dev

값에 따라 선택 비활성화 / 활성화

분류에서Dev

값에 따라 선택 비활성화 / 활성화

분류에서Dev

JQuery : 선택하면 활성화 아니면 비활성화

분류에서Dev

JavaFX tableview 행 선택 활성화 및 비활성화

분류에서Dev

JavaFX tableview 행 선택 활성화 및 비활성화

분류에서Dev

Symfony2 선택 필드 : 빈 값

분류에서Dev

2 입력 라디오를 선택하면 비활성화 된 제출 버튼이 활성화되지만, 선택 취소하면 제출 버튼이 다시 비활성화되지 않습니다.

분류에서Dev

typescript를 사용하여 이온 선택을 비활성화하는 방법. 이온 2

분류에서Dev

다중 선택 Django 위젯에서 선택 비활성화

분류에서Dev

선택 상자 선택시 자체 비활성화

분류에서Dev

옵션이 선택된 선택 비활성화

Related 관련 기사

  1. 1

    선택한 값에 따라 select2 옵션 비활성화

  2. 2

    Zend Framework 2에서 일부 옵션 선택 비활성화

  3. 3

    Angular 2 데이터 선택기 비활성화

  4. 4

    sifter 비활성화 선택

  5. 5

    선택 1이 mysql없이 선택 2보다 큰 경우 값 비활성화 / 제거

  6. 6

    angular2 보조 선택 요소에서 선택 옵션 제거 또는 비활성화

  7. 7

    적성-선택 저장 비활성화

  8. 8

    Symfony2 Form Builder-DB 쿼리에서 선택 배열 생성

  9. 9

    Symfony2에서 로그인 비활성화

  10. 10

    ConEmu 복사 선택 비활성화

  11. 11

    jQuery, onclick 및 비활성화 선택

  12. 12

    선택 옵션 비활성화

  13. 13

    선택된 필드 비활성화

  14. 14

    TreeView에서 선택 비활성화

  15. 15

    JS-선택 요소 비활성화

  16. 16

    ToggleButton 선택 색상 비활성화

  17. 17

    Swift 3 : UITableViewCell 비활성화 선택 스타일도 선택 비활성화

  18. 18

    QTableWidget에서 행 선택시 QPushButton 활성화 / 비활성화

  19. 19

    값에 따라 선택 비활성화 / 활성화

  20. 20

    값에 따라 선택 비활성화 / 활성화

  21. 21

    JQuery : 선택하면 활성화 아니면 비활성화

  22. 22

    JavaFX tableview 행 선택 활성화 및 비활성화

  23. 23

    JavaFX tableview 행 선택 활성화 및 비활성화

  24. 24

    Symfony2 선택 필드 : 빈 값

  25. 25

    2 입력 라디오를 선택하면 비활성화 된 제출 버튼이 활성화되지만, 선택 취소하면 제출 버튼이 다시 비활성화되지 않습니다.

  26. 26

    typescript를 사용하여 이온 선택을 비활성화하는 방법. 이온 2

  27. 27

    다중 선택 Django 위젯에서 선택 비활성화

  28. 28

    선택 상자 선택시 자체 비활성화

  29. 29

    옵션이 선택된 선택 비활성화

뜨겁다태그

보관