我有一个ZF2应用程序,可在多个主机上运行,例如:
www.site1.com
www.site2.com
www.site3.com
www.site4.com
www.site5.com
www.site6.com
所有这些网站仅使用相同的layout.phtml
文件,该文件称为layout.phtml
,并且根据网站的类型,为布局文件加载不同的CSS皮肤。
我的问题是,我如何为site6创建一个单独的布局文件,以便它只使用该布局?
答案 0 :(得分:0)
您可以使用the ServerUrl
view helper。另请检查this answer here。
$serverUrl = $this->serverUrl(); // output: http://www.siteX.com
然后,您可以根据此变量的值设置css或其他特定布局。例如,您可以在视图中使用a php switch statement(在layout.html
文件中):
在视图中:
switch( $serverUrl ){
case 'http://www.site1.com':
// logic for site 1
break;
case 'http://www.site2.com':
// logic for site 2
break;
case 'http://www.site3.com':
// logic for site 3
break;
case 'http://www.site4.com':
// logic for site 4
break;
case 'http://www.site5.com':
// logic for site 5
break;
case 'http://www.site6.com':
// logic for site 6
break;
}
或者,您也可以根据$serverUrl
的值在控制器中设置不同的布局。如何设置布局也解释here in this answer。如下所示:
在控制器中:
$serverUrlHelper = $this->getServiceLocator()->get('ViewHelperManager')->get('ServerUrl');
$serverUrl = $serverUrlHelper();
switch( $serverUrl ){
case 'http://www.site1.com':
$this->layout('layout/layout1');
break;
case 'http://www.site2.com':
$this->layout('layout/layout2');
break;
case 'http://www.site3.com':
$this->layout('layout/layout3');
break;
case 'http://www.site4.com':
$this->layout('layout/layout4');
break;
case 'http://www.site5.com':
$this->layout('layout/layout5');
break;
case 'http://www.site6.com':
$this->layout('layout/layout6');
break;
}
现在我使用了switch语句,但有可能有100种不同的方法可以做到这一点,但我会留下你的创造力。