[英]Changing CSS class dependent on page
使用 Zend,我试图找到最有效的方法来为每个页面调用一个新的 CSS class。 我宁愿不为每个页面创建新的布局。 我很好奇是否可以使用变量来更改 class。
在我要使用的布局中: <div id="main" class="<?php echo $header; ?>">
CSS 看起来像:
#main {
display:block;
min-width:960px;
}
#main.homeBG {
height:451px;
background:url(../img/images/home_bg.jpg) no-repeat center top;
}
#main.toolsBG {
height:451px;
background:url(../img/images/tools_bg.jpg) no-repeat center top;
}
所以不同的页面有不同的BG图像。
我要做的是更改每个视图的 Controller 操作中的 $header 变量。
class ToolsController extends ZendExtension_Controller_Action
{
/**
* Init
*/
public function init()
{
}
/**
* Default Index Action
*/
public function indexAction()
{
$header = $this->view->('toolsBG');
}
}
我知道那是错误的,但我将在这里举个例子。
有没有办法做到这一点,或者我应该为每个视图制作一个单独的布局页面?
谢谢。
如果您的问题是如何从 controller 设置视图变量,那么方法如下:
//controller
$this->view->header = 'toolsBG';
//view
<div id="main" class="<?php echo $this->header; ?>">
但是,如果您的操作名称是不言自明的,那么您可以创建一个视图帮助程序,并且在该帮助程序中,您可以返回您的操作名称,或者模块、controller、操作等的下划线分隔组合。
有关如何创建视图助手的信息,请参阅此
有关如何获取模块 controller 的信息,视图助手中的操作,请使用以下内容:
$request = Zend_Controller_Front::getInstance()->getRequest();
$module = $request->getModuleName();
$controller = $request->getControllerName();
$action = $request->getActionName();
我不喜欢 Zend 框架,但是您是否尝试将 $header 变量设置为当前页面? 如果是这样,请尝试使用$_SERVER['REQUEST_URI']
(是的,丑陋的)或者将其作为变量传递到您的视图中?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.