2011-07-19 15 views
0

Zendを使用して、各ページに対して新しいCSSクラスを呼び出す最も効率的な方法を見つけようとしています。私はむしろ各ページの新しいレイアウトを作成しないでください。クラスを変更するために変数を使用できるかどうか不思議でした。私が使用するつもりだったレイアウトでページに依存するCSSクラスを変更する

:だから、別のページに別のBGの画像がある

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

<div id="main" class="<?php echo $header; ?>">

CSSは次のようになります。

私がしようとしているのは、各ビューのControllerアクションで$ header変数を変更することです。

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

私はそれが間違っていることを知っていますが、ここで私の例として使っています。

これを達成する方法はありますか、それともそれぞれのビューに対して別々のレイアウトページを作成するだけですか?

ありがとうございました。

答えて

0

私はZend Frameworkに参加していませんが、現在のページに$ header変数を設定しようとしていますか?その場合は、$_SERVER['REQUEST_URI'](はい、醜い)を使用するか、変数としてビューに渡してください。

0

あなたの質問は、コントローラからビュー変数を設定する方法であれば、これはどのようにある:

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

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

しかし、あなたのアクション名が自明であれば、あなたはビューヘルパーを作成し、そのヘルパー内にすることができます、あなたはコントローラ、モジュールを取得する方法についての情報についてthis

を参照して、ビューヘルパーを作成する方法についての情報については、あなたのアクション名、またはモジュールのアンダースコア区切りの組み合わせ、コントローラ、アクションなど

を返すことができ、ビューhでのアクションelperを使用する場合は、次を使用してください。

$request = Zend_Controller_Front::getInstance()->getRequest(); 
$module  = $request->getModuleName(); 
$controller = $request->getControllerName(); 
$action  = $request->getActionName(); 
関連する問題