2012-08-22 3 views
0

Zend_Form을 사용하여 비활성화 된 체크 박스를 추가하고 JS로 활성화하려고합니다.Zend_Form : 비활성화 된 체크 박스가 잘못 동작합니다.

여기에 문제가 있습니다. zend는 같은 이름과 값이 0 인 숨겨진 입력 필드를 추가합니다.이 확인란을 선택하지 않아도 값이 아닌 0 값이 전송됩니다. 이것은 위대합니다. 그러나 비활성화 된 것으로 체크 박스를 만들면 zend는이 숨겨진 필드를 출력하지 않습니다. 모든 출력은 체크 박스, 사용 안 함, 체크 여부 (아무 것도 제출하지 않으므로 사용하지 않아도 상관 없음)입니다.

클라이언트가 확인란을 활성화하고 값을 변경하도록 허용해야합니다.

사용하지 않으면 아무것도 제출되지 않고 db 체크 박스 값은 그대로 유지됩니다. 활성화되어 있으면 클라이언트가이를 선택/선택 취소 할 수 있어야합니다. 문제는 이제 숨겨진 필드가 없으며 확인란을 선택하지 않으면 아무 것도 제출되지 않습니다.

아이디어가 있으십니까?

+0

isset ($ _ POST [ 'checkboxname'])을 사용하여 게시물을 확인할 수 없습니까? – gaurang171

+0

아니요, 첫 번째 대답에 대한 설명을 참조하십시오. – user1388771

답변

0

첫 번째 : 젠드 (Zend)가이 문제를 처리하는 방식이 좋지 않습니다. 값 0으로 숨겨진 필드를 추가하는 것은 비활성화 된 체크 박스와 동일하지 않습니다.

문제를 해결하려면 : 직접 원래 상태로 숨겨진 필드를 추가하십시오.

예 :

<INPUT type="hidden" name="originalStateOfMyCheckbox" value="enabled/disable"> 

지금 당신이 첫번째 $ _POST [ "originalStateOfMyCheckbox"]의 값을 선택하여 체크 박스의 값을 확인할 수 있습니다.

활성화 된 경우 : isset ($ _ POST [ "yourcheckboxname"])을 사용하여 선택했는지 확인할 수 있습니다.

비활성화 된 경우 : 다시 isset ($ _ POST [ "yourcheckboxname"])를 사용하여 자바 스크립트가 활성화되었는지 확인할 수 있습니다.

+1

그게 나를 위해 작동하지 않습니다. 물건을 다루는 일반화 된 방법이 필요합니다. 맞춤 HTML을 추가하거나 $ _POST 안에있는 각 필드를 검사하는 것은 불가능합니다. 나는 echo $ form을 사용하여 전체 양식을 렌더링하므로 html 추가는 문제가되지 않으며 첫 번째로 $ form-> populate ($ _ POST)를 다시 호출하여 각 필드를 점검하는 것이 문제가되지 않습니다. 나중에 다른 필드를 데이터베이스에 추가하면 어떻게됩니까? 나는 기억하기 불가능한 장소에서 코드를 수정해야 할 것이다. – user1388771

+2

왜 그런지는 알 수 없습니다. 특별한 경우가 있습니다 (이전에 비활성화 된 요소를 사용하도록 설정하는 경우). 이 사건이 젠드의 스트레이트 자켓 접근법에 맞지 않는다면, 감옥을 벗어나 스스로 문제를 해결해야합니다. 이 경우 예를 들어 $ _POST 자체를 조작하고 originalStateOfMyCheckbox에서 검사를 수행하고 확인란의 $ _POST에있는 값을 덮어 씁니다 (그렇지 않은 경우 0). 또는 더 나은, 그것의 사본을 만들고 조작 $ form-> populate ($ _ POST)에 그것을 먹이기 전에. 아마도 누군가 다른 사람이 더 나은 젠드 같은 해결책을 가지고있을 것입니다. –

+0

나는 더 쉬운 해결책을 발견했다. 단지 비활성화 된 속성을 제거하고 어떤 시각적 인면에만 있기 때문에 어느 체크 박스가 비활성화/활성화되어야하는지 식별하는 데 도움이되는 클래스를 추가했다. – user1388771

관련 문제