2011-01-31 13 views
1

Zend_Form을 사용하는 경우, 요소가 유효하지 않은 경우 양식은 순서가 지정되지 않은 목록을 통해 오류를 반환합니다. 단락 태그를 대신 사용하도록 어떻게 변경합니까?Zend_View_Helpers_FormErrors에서 사용하는 태그는 어떻게 변경합니까?

나는 요소들을위한 에러 데코레이터를 로딩하려고 시도해 왔고 setOptions()를 호출하여 Zend_Form_Decorator_FormErrors가 사용하고있는 ul/li 요소를 대체하기 위해 태그 집합을 넘겨 주려고했지만, 그것은 작동하지 않았다./대신 Zend_Form_Decorator_Errors는 ul 태그의 속성/값 쌍으로 옵션.

답변

2

오류 데코레이터를 확장하는 대신 formErrors보기 도우미를 확장하여 배열의 옵션을 수락하고 처리하도록했습니다. 나는 그것에 오류 장식 및 setOptions을() 가지고,

class My_View_Helper_FormErrors extends Zend_View_Helper_FormErrors 
{ 
    public function formErrors($errors, array $options = null) 
    { 
     if(key_exists('htmlElementStart', $options)) 
     { 
     $this->setElementStart($options['htmlElementStart']); 
     unset($options['htmlElementStart']); 
     } 
     if(key_exists('htmlElementEnd', $options)) 
     { 
     $this->setElementEnd($options['htmlElementEnd']); 
     unset($options['htmlElementEnd']); 
     } 
     if(key_exists('htmlElementSeparator', $options)) 
     { 
     $this->setElementSeparator($options['htmlElementSeparator']); 
     unset($options['htmlElementSeparator']); 
     } 
     return parent::formErrors($errors, $options); 
    } 
} 

옵션을 전달하려면 :

$element->getDecorator()->setOptions(
    array(
    'class' => 'error', 
    'htmlElementStart' => '<p%s>', 
    'htmlElementEnd' => '</p>', 
    'htmlElementSeparator' => '<br/>' 
) 
); 

을하고 요소를 말해 formErrors보기 도우미 사용중인 나를 태그를 변경할 수 있도록 setter를 가지고 도우미 경로를로드하십시오 :

$element->getView()->addHelperPath('My/View/Helper', 'My_View_Helper'); 
1

불행히도 여러 가지 옵션을 전달하여 출력 형식을 변경할 수는 없습니다. 이 동작을 변경하려면 자신의 Errors 데코레이터 (원래 Errors 데코레이터의 파생 가능성이 높음)를 작성해야합니다. 이 새로운 데코레이터는 자신의 뷰 도우미 (ZF가 기본적으로 사용하는 formErrors 도우미 대신)를 호출 할 수 있도록하기 위해 render() 메소드를 덮어 써야합니다.

+0

나는 동일한 결론에 도달했으며 이미이 작업을 시작했습니다. 어떻게 지내는지 알려 드리겠습니다. –

+0

Errors 데코레이터는 formErrors 도우미로 프록시합니다 (우리 모두 이미 알고 있습니다). 오류 데코레이터 render() 메서드를 덮어 쓰는 대신 formErrors 뷰 도우미를 확장하여 옵션 배열을 수락하고 처리했습니다. –

+0

그게 내가하는 일이야. – akond

관련 문제