开发者

Changing CSS class dependent on page

Using Zend, I'm trying to find the most efficient way to call a new CSS class for each page. I would rather not create a new layout for each page. I开发者_StackOverflow was curious if I could use a variable to change the class.

In the layout I was going to use: <div id="main" class="<?php echo $header; ?>">

The CSS looks like:

#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;
}

So there are different BG images for the different pages.

What I am trying to do is change the $header variable in the Controller action for each view.

class ToolsController extends ZendExtension_Controller_Action
{
/**
 * Init
 */
public function init()
{
}
/**
 * Default Index Action
 */
public function indexAction()
{
    $header = $this->view->('toolsBG');
}
}

I know that's wrong, but I'll just use that for my example here.

Would there be a way to accomplish this, or should I just make a separate layout page for each view?

Thanks.


I am not into Zend Framework, but are you trying to set the $header variable to the current page? If so, try using $_SERVER['REQUEST_URI'] (yes, ugly) or maybe pass it on as a variable into your view?


If your question is how to set a view variable from controller, then this is how:

//controller
$this->view->header = 'toolsBG';

//view
<div id="main" class="<?php echo $this->header; ?>">

But if your action names are self explanatory then you can create a view helper and within that helper, you can return your action name, or an underscore-separated combination of module, controller, action etc.

For info on how to create a view helper, see this

For info on how to get module, controller, action in view helper, use the following:

$request    = Zend_Controller_Front::getInstance()->getRequest();
$module     = $request->getModuleName();
$controller = $request->getControllerName();
$action     = $request->getActionName();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜