2011-02-22 5 views
5

안녕 Zend_Form_Element_Checkbox의 문제는 렌더링 할 때 실제 체크 박스와 같은 이름으로 숨겨진 입력 필드를 생성한다는 것입니다.젠드 프레임 워크 체크 박스 문제

이 난 형태로 내부의 요소를 만드는 방법은 다음과 같습니다 : 그럼 코드를 보자

$onlineCheckbox = $this->createElement('checkbox', 'online_checkbox', array(
     'label'=>'Online:', 
     'uncheckedValue'=> '0', 
     'checkedValue' => '1' 
    )); 

을 그리고이 같은 출력 HTML 모양입니다 :

<input type="hidden" name="online_checkbox" value="0" /><input type="checkbox" name="online_checkbox" id="online_checkbox" value="1" /> 

이제 문제는 그 기타에 브라우저를 누른 다음 파이어 폭스 게시물을 통해 필요한 결과를 얻을 수 있습니다 ('0', '1'을 선택하면).하지만 파이어 폭스에서는 두 가지 경우 모두 '0'이됩니다. 숨겨진 필드 때문입니다. 내가 봤 거든이 문제는 알아낼 수없는 것 같습니다. 그래서 내 질문은 어떻게 다른 사람들이 이것을 관리하는지 또는 파이어 폭스에서이 작업을 수행 할 수있는 해결책이있을 수 있다는 것입니다. 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

편집 : 감사합니다. @Marcin - 문제는 내 데코레이터에 있다고 생각합니다. Firebug에서 나는 지저분한 결과물을 얻었습니다. 올바르게 입력하면 다시 작동 할 것입니다. @Marcin에게 지적 해 주셔서 감사합니다!

+1

@Centurion. 내가 방금 스 니펫을 점검했을 때 파이어 폭스에서 작동하는 것처럼 자세한 내용을 제공 할 수 있습니까 ('0'을 선택하지 않으면 '1'을 선택). – Marcin

+0

@Marcin, 일반 html로 테스트 할 때 작동하지만 zend로 생성 할 때는 그렇지 않습니다. 젠드로 테스트 했습니까? – Centurion

+1

@Centurion. Zend_Forms 중 하나에 $ onlineCheckbox를 추가했고, 제출 후에 $ mainForm-> getValue ('online_checkbox'); 확인란의 가치를 얻을 수 있습니다. 그것은 예상대로 작동합니다. – Marcin

답변

1

당신은이 문제에 대한 해결 방법으로 IdenticalValidator를 사용해야합니다 :

->addValidator('Identical', false, '1'); 
2

당신은 아마 미꾸라지 양식을 사용할 수 있습니다. Zend_Dojo_View_Helper_CheckBox는 숨겨진 요소와 양식 요소를 렌더링합니다. 당신은 너무처럼 평범한 구식 확인란을 지정할 수 있습니다

$onlineCheckbox = new Zend_Form_Element_CheckBox('online_checkbox', array(
    'label'=>'Online:', 
    'uncheckedValue'=> '0', //can be removed, this is the default functionality 
    'checkedValue' => '1', //can be removed, this is the default functionality 
)); 

이 뜻을 패스 Zend_Form에 의해 ::의 createElement()의 플러그인 로더.

해피 해킹!

+0

고마워, 다음 번에해볼거야;) – Centurion