2010-07-15 6 views
2

에 걸쳐 재사용보기 헤더 정보, 나는 특정 컨트롤러에서 뷰의 맨 위 섹션에 동일한 정보를 전달해야하는 일반적인 사용 사례가 있습니다.는 젠드 프레임 워크 - 젠드 프레임 워크에서 컨트롤러

예를 들어, "Book"컨트롤러가있는 경우, 페이지 맨 위에 요약 책 정보를 표시하고 주석 아래에 탭 인터페이스가있어 자세한 정보 등을 표시하려고합니다. 각 탭 책 컨트롤러의 작업입니다. 다음과 같이 컨트롤러의 뷰에 요약 정보를 전파하는 권장 방법은 무엇입니까?

  1. 각 작업에서 요약 정보를 계속해서 가져 오지는 않습니다.
  2. 내보기에 정보를 반복하고 있지 않다.

나는 Zend View Helper, placeholder 또는 액션 도우미 ($ this-> action ...)를 사용하고있다.

제안 사항?

답변

0

당신이 컨트롤러에서 init() 방법에 도서 정보를 가져 오기 할 것 같은 소리 : 작업은 책 정보를 렌더링

class MyController extends Zend_Controller_Action 
{ 
    protected $_book; 

    public function init() 
    { 
     // get the book data/model, etc 
     $book = $this->_getBook(); 

     // if necessary, store the book for use in the actions 
     $this->_book = $book; 

     // store the book in the view 
     $this->view->book = $book; 
    } 
} 

경우에, 당신은 아마 멀리 빈 액션 메소드로 얻을 수있는, 뷰 스크립트가 자신의 일을 처리하게합니다.

단점은 의 서적 데이터를 액션으로 가져 오는 것입니다. 책의 데이터를 필요로하지 않는 일부 조치를가한다면, 당신은 그것을 가져 오는 오버 헤드를 먹는 것.

0

나는 (작업 도우미 AjaxContent를 통해 현재 솔루션과 쉽게 통합 할 수 있어야 동적 탭 '내용을로드하는 것입니다. 그냥 탭 컨테이너에 작업의 응답을로드합니다.

를가 아닌 고수하기로 결정하는 경우 하나 이상의 페이지에서 동일한 부분의 정보가 필요하기 때문에 -ajax 솔루션은 코드가 반복적으로 강제된다. 뷰 도우미 논리의 일종을 수행 (또는 로직에 대한 프록시)를하면서 보낸 partial 사용자의 요구에 더 적합해야한다 만 프레 젠 테이션 & 마크 업을해야합니다.

그 하드에 안 가져온 정보 시스템, 일부 스마트 캐시 방식 (각 섹션/탭 아마도 하나의 캐시 엔트리)를 사용하는 가정.