2011-02-18 3 views
5

젠드가 $ this-> layout() -> content with scripts/index/index.phtml을 어떻게 연결합니까?젠드 프레임 워크의 페이지 기본 흐름 PHP

페이지가 어떻게 서로 붙어 있어야하는지에 대한 기본 사항을 이해하지 못하고 있습니다. 젠드 사이트에서 빠른 시작을 살펴 봤지만 너무 단순합니다.

답변

1

보기에서 렌더링 된 내용 (PHTML 파일)이 컨텐츠 변수에 저장됩니다. 그것은 레이아웃 템플릿 (다른 phtml 파일 - 선호 layout.phtml)에 에코 될 수 있습니다. 그리고 그것은 '최종 제품'입니다 :) (또는 어쩌면 당신은 당신에게 더 많은 질문을하고 싶습니다).

4

Tomáš Fejfar가 설명했듯이 $this->layout()->content의 작동 방식입니다. 흥미로운 점은 '콘텐츠'는 레이아웃의 변수가 아니라는 것입니다. 사실, 'content'는 'Zend_Layout'이라는 뷰 자리 표시 자의 핵심입니다. 이러한 이유로, 다음 조각은 layout.phtml에 echo $this->layout()->content에 해당합니다 :

$placeHolder = Zend_View_Helper_Placeholder_Registry::getRegistry()->getContainer('Zend_Layout'); 
echo $placeHolder['content']; 

// or 

echo $this->placeholder('Zend_Layout'); 

// or 

echo $this->placeholder('Zend_Layout')->content; 

매우 유용 할 수 있습니다. 내 말은 'Zend_Layout'자리 표시 자의 사용자 정의 키 값을 표시 할 layout.phtml의 일부 위치를 정의 할 수 있다는 것입니다. 예를 들어, layout.phtml을 갖고 싶고 바닥 글의 텍스트를 수정할 수 있기를 원한다고 상상해보십시오.

<div id="footer"> 
<?php echo $this->layout()->myFooterText; ?> 
</div> 

당신 수 설정이 바닥 글에 대한 기본 값 예를 들면 : 당신은 바닥 글에 다음이 포함됩니다 layout.phtml을 정의하여이 작업을 수행 할 수 귀하의 Bootstrap.php. 그러나 원하는 경우 다음과 같이 작업에서이 텍스트를 수정할 수 있습니다.

$this->view->placeholder('Zend_Layout')->myFooterText = 'Some text only for this action'; 

그게 내가 추가하고 싶었던 것입니다. 물론 $this->view->placeholder('Zend_Layout')Zend_View_Helper_Placeholder_Container의 인스턴스이므로 Zend_Layout 자리 표시자를 사용하여 다른 작업을 수행 할 수 있으므로 물론 다른 장면을 생각할 수도 있습니다.

편집 : 키 'content'는 기본 이름입니다. 당신은 다른 사람이 대신 echo $this->layout()->content;echo $this->layout()->viewoutput;을 사용하여 layout.phtml에 Zend_Layout의 setContentKey 방법, 예컨대 :이 변경으로

protected function _initSetNewLayoutContentKey() { 

    $layout = $this->bootstrap('layout')->getResource('layout'); 

    // instead of 'content' use 'viewoutput' 
    $layout->setContentKey('viewoutput'); 
} 

을 사용하는 것으로 변경할 수 있습니다.

+0

'content'는 기본 응답 세그먼트의 이름이며, 모두 레이아웃보기 도우미에서 사용할 수 있습니다. 응답 개체 자체에서 가져올 수도 있습니다. 응답 세그먼트는 불행히도 ZF – Phil

+0

@ Phil Brown의 문서화 된 기능입니다. 제 말은 'content'가 Zend_Layout 자리 표시 자의 핵심이고 Zend_Layout이이 표시 줄을 사용하여 작업 출력을 저장한다는 것을 의미합니다. 다음과 같이 자리 표시 자의 키를 easly 확인할 수 있습니다. var_dump ($ this-> placeholder ('Zend_Layout') -> getKeys()); – Marcin

0

레이아웃은 모든 디스 패칭이 완료된 후 자체보기를 만드는 컨트롤러 플러그인으로 최종 응답 객체를 취할 수 있고 뷰의 내용 속성을 응답 본문으로 설정할 수 있습니다.

기본적으로 index.phtml의 버퍼에 우선 응답 개체에 저장되면 나중에 레이아웃에서이 값을 사용하여 자체보기 버퍼를 변경합니다.

관련 문제