2011-09-16 4 views
0

실제로 모든 양식 요소에 제네릭 데코레이터를 사용하는 좋은 방법을 찾고 있지만 동시에 일부의 일부 데코레이터를 변경할 수 있습니다. 요소.php 젠드 프레임 워크 - 장식가가 이미 변경되지 않은 경우에만 변경하기

모든 제 구성 요소에 새로운 제너릭 데코레이터가 필요하다고 말하십시오. 내 부모 일반 폼 클래스의 addElement 메서드에서 그렇게 할 것입니다.

public function addElement($element, $name = null, $options = null) 
{ 
    parent::addElement($element, $name, $options); 

    if (! is_object($element)) { 
     $element = $this -> getElement($name); 
    } 

    if (is_object($element)) 
    { 
     $element -> clearDecorators(); 
     $element -> addDecorators($this -> elementDecorators); 
    } 

    return $this; 
} 

지금, 내가 어떤 형태의 일부 요소에 매우 구체적인 요구 사항이 예를 들어 Zend_Form 느릅 나무를 확장 My_Form 클래스의 My_Form_User 포함 된 실제 요소 선언에 의해 확장 될 것입니다, 내가 좋아하는 일을 할 것입니다. 그래서 나는 My_Form_User 클래스에서 요소를 만들 때 이러한 장식자를 설정하지만 물론 addElement으로 양식에 추가하면 1 장식 자 (ViewHelper 또는)를 확인하는 방법을 찾을 수 없습니다. ..)가 수정되어서 제네릭과 함께 지우지 않습니다.

아이디어가 있으십니까? 감사 !

답변

0

은 는 는 getDecorator ($ 이름)
  • getDecorators()
  • removeDecorator ($ 이름)
  • 은 ... 아마도 이것이 도움이

    • ... 조금 짧은,하지만 이미.

  • +0

    실제로 getDecorator ($ name)을 수행하면 Zend 기본 장식이 올바르게로드 될 때 항상 뭔가를 갖게됩니까? – jhuet

    +0

    장식자를 보존하거나 제거하고 싶다면 어떤 것을 알아야할까요? 그것들이 기본값이거나 그렇지 않다면 차이가 있습니까? – hakre

    +0

    My_Form_User가 아닌 My_Form 클래스에서 예제를 취하면 요소에 특정 데코레이터가 있는지 알 수 없습니다. 그것은 정확히 내 질문의 지점, 그 방법을 알고 싶습니다 :) – jhuet