2013-07-15 2 views
2

레이블에 HTML이 포함 된 젠드 텍스트 요소가 있습니다. 젠드가 거기에있는 HTML을 이스케이프하는 것을 막을 수있는 이유는 ->setOption('escape', false); 옵션을 추가했기 때문입니다. 이것은 예상대로 작동합니다.젠드 중지 HTML에서 탈출하는 양식 요소 오류

그러나 오류가있는 경우 오류는 오류 메시지 제목으로 이스케이프 된 HTML 레이블을 표시합니다. 나는이처럼 보이는 뭔가를 얻을 :

<strong>First</strong> name 
Please enter your first name 

나는이 문제를 해결 얻을 수있는 몇 가지 방법을 생각 해요,하지만 하나가 가능합니다 있는지 확실하지 않습니다. 입력 레이블을 직접 사용하지 않도록 오류 형식을 변경할 수 있습니까? 또는 Zend가 오류에서 HTML을 이스케이프하지 못하도록하는 방법이 있습니까?

편집 : 입력 옆에 각 입력 오류가 표시되지 않습니다. 대신 모든 오류를 그룹화하여 한 번에 표시합니다.

$firstName->removeDecorator('Errors'); 

을 그리고 나는 FormErrors 장식 추가하여 그룹으로 표시 해요 : : 각 요소는 오류 장식은 제거했습니다

$myForm->setDecorators(array('FormErrors', ....)); 

을 나는이에 대한 입력의 레이블을 원인이 무엇이라고 생각 오류 목록의 일부로 표시됩니다.

첫 번째 옵션 : 이 Zend_View::setEscape 방법을 두 번째 옵션을 사용하여 다른 Zend_View 탈출 콜백을 지정이 : 사용자 정의 FormErrors 장식 및 재정의를 만들기 당신이 FormErrors 장식을 사용하는 경우

+0

? 적어도 ZF1에서 기본 오류 메시지 데코레이터는 레이블을 오류의 제목으로 포함하지 않습니다. – Divey

+0

@Divey Thanks Divey, 나는 처음부터 썼어야 할 것에 대한 나의 질문을 업데이트했다. FormErrors 양식 데코레이터를 사용하여 오류를 그룹화합니다. 그래서이 레이블이 제목으로 표시됩니다. – dKen

답변

0

는, 당신은 레이블을 탈출 중지하는 방법 두 가지 옵션이 있습니다 renderLabel 방법.

예 : 오류 메시지를 생성하는 어떤

class My_Form_Decorator_FormErrors extends Zend_Form_Decorator_FormErrors 
{ 
    public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $view) 
    { 
     return $this->getMarkupElementLabelStart() 
      . $element->getLabel() 
      . $this->getMarkupElementLabelEnd(); 
    }  
} 

class Forms_Example extends Zend_Form 
{ 
    public function init() 
    { 
     /* ... */ 
     $this->addPrefixPath('My_Form_Decorator', 'My/Form/Decorator', 'decorator'); 
     /* ... */ 
    } 
}