이 같은 컨트롤러에서 데이터를 반환하고 있습니다 :ZF2 : 컨트롤러 템플릿을 레이아웃 템플릿으로 전파하는 방법은 무엇입니까?
/**
* Password request sent
*
* @return array
*/
public function passwordRequestSentAction()
{
return array(
'foo' => $this->bar,
);
}
그러나 $this->foo
것은
올바른 컨트롤러 내에서 나는에 postDispatch 방법을 만들어야했습니다 passwordRequestSent.phtml/비록 layout.phtml 내에서 null의 경우 내 추상적 인 컨트롤러와 attachDefaultListeners에 링크()와 postDispatch에서이 작업을 수행 :
$e->getViewModel()->setVariables($e->getResult()->getVariables());
인가 정말로 w 그 가서 갈래? 레이아웃이나 페이지 템플릿과 상관없이 모든 변수를 공유하고 싶습니다.
호기심 - 왜이 작업을 수행 하시겠습니까? – Fge
@Fge 저는 이것을 위해 자리 표시자를 사용하여 대부분의 필요를 해결했습니다. 하지만 여전히 가끔은 필요성을 느낄 수 있습니다. 예를 들어, 프로젝트의 모든 단일 .phtml은 $ messages 배열을 전달 받아 $ this-> showMessages ($ messages)와 같은 도우미에게 보냅니다. 필자는 뷰 스크립트 전반에 걸쳐 상당한 보일러 코드를 가지고 있으며이를 줄이기 위해 partials (실행 가능한 솔루션을 사용해야하지만 모든 뷰 스크립트를 호출해야 함) 또는 레이아웃에 상용구 코드가 있어야합니다. – Matsemann
예, 모든 페이지에서 공유하고 싶은 레이아웃 헤더에 몇 가지 로직이 있습니다. 모든 페이지에있는 모든 코드와 로직을 레이아웃에 포함시키고 싶었습니다. 필자가 모든 phtml 파일에 메뉴 헤더를 포함시키지 않습니다. –