1

まず、レイアウトを「切り替える」必要はありません。

私はCSSテーマについて話しています。つまり、レイアウトは同じままです。

私がする必要があるのは、特定のカテゴリにあるときにcssクラスを切り替えることです。

カテゴリはルートによって定義されます(リクエストパラメータの名前とID)

だから私はViewHelperについて考えますlayout.phtml<body class="theme-category"></body>

しかし、ビューヘルパーでリクエストオブジェクトにアクセスしますが、それは可能ですか?それはベストプラクティスですか?

次に、同じプロセスを使用しますが、コントローラーでパラメーターを渡し、ヘルパーにデフォルトのパラメーターが提供されていない場合はフォールバックします。

フィードバックは何ですか?

4

2 に答える 2

1

あなたのレイアウトにこれを入れてください

<?=$this->headLink(); ?>

そして、コントローラーでは、このような特定のcssファイルを追加できます

$this->view->headLink()->appendStylesheet("/css/file.css"); 

これにより、すべてのコントローラーでcssテーマを変更できるようになります。PSはそれをコントローラーのinit関数に追加します。

于 2011-03-25T09:44:36.730 に答える
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;">
于 2011-03-25T09:46:05.370 に答える