2010-12-09 4 views
2

Zend-Form을 사용하여 상당히 복잡한 형식 설정이 있습니다.젠드 양식 setValue,보기에 <input value = "">와 같은 빈 값이 있습니다.

$oHidden = new Zend_Form_Element_Hidden('ratings'.$k);   
$oHidden->setValue('ratings');Zend_Debug::dump($oHidden); 
$this->addElements(array($oHidden)); 

이 방법은, 같은 형태의 다른 장소에서 잘 작동하지만,이 하나, 그것은 출력처럼 다른 :

<input type="hidden" name="ratings1" value="" id="ratings1" /> 
을 한 시점에서 내가 사용하는 숨겨진 입력 값을 설정하고 있습니다

나는 $ oHidden 변수를 덤프 한 그것은 출력 :

object(Zend_Form_Element_Hidden)#143 (29) {
... ["_value":protected] => string(7) "ratings" ["_view":protected] => NULL ["_isPartialRendering":protected] => bool(false) }

그래서 그것은 잠시 동안 잘 값을 설정하지만, 그것을 렌더링하지 않습니다. 이 동작에 대한 이유를 찾는 시작 위치를 알려주십시오.

감사합니다, Alek

+1

제 생각에는 값을 비어있는 채로, 나중에 'isValid()'메소드의 양식을 통해 값을 설정하는 것입니다. 확인해야 할 코드가 더 필요합니다. – Phil

+0

음, 나중에 'idValid()'를 사용하고있었습니다. 처음에는 'HtmlTag'데코레이터로 해결 방법을 찾았지만 내 자신의 Form 클래스를 작성하기로 결정했다. 어쨌든 고마워요 – Alek

답변

3
$hidden = new Zend_Form_Element_Hidden(array('name' => 'ratings', 'value' => 'ratings')); 

그것을보십시오!

+0

대단히 감사합니다 !!!! – softwareplay

5

문제는 정확히 isValid() 기능입니다. 양식에서 모든 값을 지우고 전달 된 매개 변수로 다시 값을 다시 채 웁니다. 매개 변수가 없다면 명시 적으로 몇 줄 먼저 설정 했더라도 더 이상 매개 변수가 양식에 표시되지 않습니다.

내 사례는 로그인 양식에서 선택적인 "리디렉션"숨겨진 필드였습니다.

$form = new Form_Login(); 
$redirect = $this->_getParam('redirect','/user/login/welcome'); 
$form->addElement('Hidden','redirect',array('value' => $redirect)); 

if ($this->_request->isPost() && $form->isValid($this->_getAllParams())) { 
    // WTF! the "request" field has no value!!! 
} 

해결 방법은 액션 parametre 설정했다 : 여기 (읽기 쉽도록 단순화 된) 코드의

$form = new Form_Login(); 
$redirect = $this->_getParam('redirect','/user/login/welcome'); 
$this->_setParam('redirect',$redirect); 
$form->addElement('Hidden','redirect',array('value' => $redirect)); 

if ($this->_request->isPost() && $form->isValid($this->_getAllParams())) { 
    // AHA! now it works! 
} 

나는 질문은 반년 오래 알고 있지만 오 아니라, 결코보다 늦게 : 디.