- 당신이 당신의 모듈의 뷰 루트, 그 작품을 잘에서 "레이아웃"폴더로 레이아웃 파일을 넣으면
namespace MyModule\Extension;
use Zend\View\Model\ViewModel;
class MyModuleViewModel extends ViewModel {
private $innerTemplate;
private $myLayout = 'my-module/layout/layout';
public function setTemplate($template) {
$this->template = $this->myLayout;
$myTemplate = (string) $template;
$this->innerTemplate = new ViewModel($this->variables);
$this->innerTemplate->setTemplate($myTemplate);
$this->innerTemplate->parent=$this;
$this->addChild($this->innerTemplate);
return $this;
}
public function setLayout($layout) {
$this->myLayout = $layout;
return $this;
}
public function setVariable($pName, $pVar){
if(isset($this->innerTemplate)) $this->innerTemplate->setVariable($pName, $pVar);
return parent::setVariable($pName, $pVar);
}
public function setVariables($variables, $overwrite=NULL){
if(isset($this->innerTemplate)){
if(isset($overwrite)) $this->innerTemplate->setVariables($variables, $overwrite);
else $this->innerTemplate->setVariables($variables);
}
if(isset($overwrite)) return parent::setVariables($variables, $overwrite);
else return parent::setVariables($variables);
}
}
. 다른 레이아웃을 원하면 setLayout ('my-module/layout/mobile.phtml')을 호출해야합니다.
이제 컨트롤러를 int로는 다음과 같은 방법처럼이 사용자 정의보기 모델을 사용합니다 -
public function indexAction() {
/* your action code in your controller */
return new MyModuleViewModel();
}
이 레이아웃/layout.phtml은 모듈의 래퍼로 작동합니다. 위의 코드는 세 가지 다른 레이아웃을로드합니다. "main layout"> "모듈 별 레이아웃"> "액션 템플릿"