2012-11-28 2 views
1

가 나는 Zend_Form_Element_Submit에서 탈출 해제 할 수 없습니다 제출, 그래서 라벨에 특수 문자가있을 때 그것이 값의 표시되지 않습니다 :안 탈출

$this->submit = new Zend_Form_Element_Submit('submit'); 
$this->submit->setLabel('Iniciar Sesión'); 
$this->submit->setIgnore(true); 
$this->addElement($this->submit); 

내가 $this->submit->getDecorator('Label')->setOption('escape', false); 시도했지만 $this->submit->setAttrib('escape', false);을 제안 내가 (아마도 "라벨"데코레이터를 사용하지 않는 제출) ..

을 나는 또한 시도했다에 "비 객체"오류를 얻을 수 있지만, 아무 텍스트도 표시되지 않습니다 .. 어떤 생각? 감사합니다

답변

1

는이 일을하는 것만 큼 간단해야합니다

$element->addDecorator('Label', аrray('escape'=>false));

또는 setEscape()를 참조하십시오. http://framework.zend.com/manual/1.12/en/zend.form.standardDecorators.html

명명 된 데코레이터를 검색하지 못했습니다 ... 시도하십시오 getDecorators() 결과에 'label'이 표시됩니까?

+0

먼저 요소 라벨이 아니라 버튼에 대해 이야기하고 있다는 것을 처음 보았습니다. 아직도, 요소의 데코레이터는 ISO-8599-1을 기본값으로하는'htmlentities'를 사용할 수 있습니다. 그래서 내 대답은 여전히 ​​적용될 수 있습니다. 물론 doctype, 인코딩, content-type 등이 모두 UTF-8로 설정되어 있는지 확인하십시오. – ficuscr

+2

Label Decorator는 setEscape, $ form-> getElement ($ elemName) -> getDecorator ('label') -> setOption ('escape', false);을 알지 못합니다. 나는 레이블에' 값은 항상 Zend_View_Helper_FormSubmit으로 이동합니다. Zend_View_Helper_FormSubmit은 항상 이스케이프 처리를 수행하고 레이블을 값으로 사용합니다.

1

Submit 요소가 사용하는 도우미는 기본적으로 이스케이프됩니다. 레이블 데코레이터와 달리 제출 레이블은 HTML 속성에 포함되어 이스케이프 처리해야합니다.

레이블 - Iniciar Sesión은 완벽하게 유효한 UTF-8 문자열이므로 이스케이프 된 버전은 동일합니다. 라벨이 표시되지 않으면 다른 것이 잘못 될 수 있습니다. Zend View가 사용하는 것과 일치하지 않는 문자 세트 (기본값은 UTF-8)를 사용하여 페이지가 제공되고있는 것 같습니다.

실제로 출력되는 내용을 보려면 페이지 소스를 확인하십시오. 그러면 더 많은 단서를 얻을 수 있습니다. 또는이 양식이있는 페이지가 공개 된 경우 URL을 제공 할 수 있으면 문제를 발견 할 수 있습니다.

0

비슷한 문제가 발생했습니다. 예를 들어, 텍스트 필드 요소에 레이블과 설명을 모두 추가했습니다.

내 테스트에서
$form->getElement('txtUPC')->getDecorator('description')->setOption('escape', false); 

setEscape()는 폼 요소 또는 장식으로 인식 할 수 없습니다 : 코드 행은 내게 그 필드 요소에 첨부 된 설명을 탈출 HTML을 끌 수있었습니다.