[英]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.