首先,我不需要“切换”布局。
我说的是CSS主题,这意味着布局保持不变。
我需要做的是在某些类别上切换css类。
类别由路径定义(请求参数中的名称和ID)
所以我想到了一个ViewHelper,在我的layout.phtml
中用来设置<body class="theme-category"></body>
但是我将在我的视图助手中访问请求对象,是否可能?这是最佳做法吗?
其次我虽然使用相同的进程但是在我的控制器中传递参数,如果没有提供,则在我的帮助器中回退默认值。
你有什么反馈?
答案 0 :(得分:1)
在你的布局中把这个
<?=$this->headLink(); ?>
在控制器中,你可以像这样添加一个特定的css文件
$this->view->headLink()->appendStylesheet("/css/file.css");
这将使您能够在每个控制器上更改css主题。 附:将它添加到控制器的init函数中。
答案 1 :(得分:0)
一个只返回css类的辅助方法怎么样,你从控制器中调用它,然后将css值传递给视图?
class YourController {
public function yourpageAction(){
// do your stuff, then call your helper
$this->view->bodyCssClass = $this->setcss();
}
protected function setcss(){
// analyse here all the parameter you wish (route, name, id etc.)
// and just return the correct css string
return $css;
}
}
你甚至可以使用“init()”方法自动调用你的“setcss”方法(或者你给它的名字)。 为了更进一步,您可以扩展Zend Controller类,让所有控制器扩展您的特定控制器:所有页面都将继承此css定义过程。它有助于维护和阅读您的代码。
在您看来,只需一个简单的电话:
<body class="<?php echo $this->bodyCssClass;">