2013-01-11 1 views
0

내 전체 양식에 Zend_Form_Decorator_HtmlTag가 있습니다. 이 같은 내가 좀하고 싶습니다이다특정 요소에 대해서만 HtmlTag 데코레이터가있는 Zend_Form

<div class="form-elements"> 
    <div> 
     <label>blah</label> 
     <input type="text" /> 
    </div> 

    <div> 
     <label>blah 2</label> 
     <input type="checkbox" /> 
    </div> 
</div> 

<div class="form-buttons"> 
    <input type="submit" /> 
</div> 

다른 요소 태그 내부에 특정 HtmlTag (입력 여기) 내부 요소, 그리고 다른 사람을 얻는 방법? 지금은 꽤 많은 형식이 있으므로 기본 형식 클래스 만 수정할 수 있다면 좋을 것입니다.

답변

1

당신의 기본 폼 클래스에이 방법을 추가

public function loadDefaultDecorators() 
{ 
    $elementsToGroup = array(); 
    foreach ($this->getElements() as $element) { 
     if ($element->getType() != 'Zend_Form_Element_Submit') { 
      $elementsToGroup[] = $element; 
     } 
    } 
    if ($elementsToGroup) { 
     $this->addDisplayGroup($elementsToGroup, 'form-elements', array(
      'order' => 0, 
      'decorators' => array(
       'FormElements', 
       array('HtmlTag', array('tag'=>'div', 'class' => 'form-elements')) 
      ) 
     )); 
    } 

    parent::loadDefaultDecorators(); 
} 

그것은 모든 폼 요소를 통해 루프 다음으로 폼에 추가 된 표시 그룹에 단추가 아닌 것은 추가 'div'데코레이터가 기본 필드 세트 1을 재정의합니다. 'order'매개 변수는 요소가 폼의 시작 부분에 남아 있도록합니다.

버튼 주위의 div는 버튼 자체의 일반적인 HtmlTag 데코레이터로 할 수 있습니다.

이 방법을 사용하면 의도 한대로 표시 그룹을 사용하려는 경우 나중에이 문제가 발생할 수 있으므로 CSS 대신에 원하는 효과를 얻을 수 있는지 확인하는 것이 좋습니다.