2010-12-08 4 views
1

내보기에서 Zend_Nagivation 인스턴스를 렌더링 할 때 기본적으로 앵커 태그의 ID는 뷰 도우미 접두사와 대시, 페이지 ID 순으로 할당됩니다. 페이지 1의 앵커 이드Zend_View_Helper_Navigation_XXX에서 사용하는 ID 접두사를 설정하는 방법

예 (동일한 Zend_Nagivation 인스턴스를 사용하여 모든)

  • Zend_View_Helper_Navigation_Menu = "메뉴 1"
  • Zend_View_Helper_Navigation_Breadcrumbs = "부스러기 1"
  • My_View_Helper_Navigation_MyMenu = "mymenu- 1 "

이것은 대부분의 경우에 완벽하지만이 접두사를 수동으로 설정하고 싶습니다.이를 수행 할 방법을 찾을 수 없습니다. 렌더링 할 때 접두사를 지정


솔루션

다음 코드를 추가 한 다음 setIdPrefix()를 호출하여 수행 할 수 있습니다

class My_View_Helper_Navigation_MyMenu extends Zend_View_Helper_Navigation_Menu 
{ 
    protected $_idPrefix = null; 

    /** 
    * Set the id prefix to use for _normalizeId() 
    * 
    * @param string $prefix 
    * @return My_View_Helper_Navigation_MyMenu 
    */ 
    public function setIdPrefix($prefix) 
    { 
     if (is_string($prefix)) { 
      $this->_idPrefix = $prefix; 
     } 

     return $this; 
    } 

    /** 
    * Use the id prefix specified or proxy to the parent 
    * 
    * @param string $value 
    * @return string 
    */ 
    protected function _normalizeId($value) 
    { 
     if (is_null($this->_idPrefix)) { 
      return parent::_normalizeId($value); 
     } else { 
      return $this->_idPrefix . '-' . $value; 
     } 
    } 
} 
+0

탐색 기능은 어떻게 구성되어 있습니까? ini 에서요? 수업? – Iznogood

+0

'Zend_Navigation' 인스턴스는 현재 4 개, 데이터베이스에서 2 개, XML 파일에서 2 개가 있습니다. 이 문제는 데이터 원본에 관계없이 모든 개체에 대해 발생합니다. – Sonny

+0

당신은 당신의 도우미를 "MyMenu"대신 "Menu"라고 부를 수 있습니다.이 경우 플러그인 로더가 ZF 하나 대신 당신을로드합니다 – Phil

답변

1

범인은 내가 다른 볼 수 없습니다하는 Zend_View_Helper_Navigation_HelperAbstract::_normalizeId()입니다 솔루션을 사용하면 필요한 각 탐색 뷰 도우미의 사용자 지정 버전을 만들 수 있습니다.

+1

지금 필, 감사합니다. 'get_class()'를 사용하고 클래스 이름의 마지막 부분 (밑줄을 분리)을 사용하고 접두사를 만들기 위해 소문자를 사용합니다. – Sonny

+0

당신의 답이 나를 해결책으로 이끌었습니다. 그래서 그것을 받아들입니다. 감사합니다 필! – Sonny

관련 문제