0

私はCakephp 2.xに取り組んでいます

現在、私は自分のビューを次のように管理しています:default.ctpすべてView/layout folderの再利用可能なデータ (メニュー、サイドバー、フッターなど) があるファイルがあり、すべての css および js ファイルもそこにインポートされます。View/ControllerName/index.ctp次に、レコードを表示しているファイルにビューページがあります。

今私が欲しいのは、特定のビューページに特定の css および js ファイルをロードすることです。どうすればこれを管理できますか?? その時点で、すべてのビュー ページが default.ctp ファイルからすべての css および js ファイルを取得しているためです。しかし、default.ctpレイアウトもロードしたいのですが、別のビューページを呼び出していると仮定して、default.ctpからいくつかのcssおよびjsファイルを選択し、残りのファイルをスキップしたいとします

私がやろうとしていることを理解していただければ幸いです。

4

2 に答える 2

3

これは可能なアプローチです: あなたのbeforeFilter関数でAppController:

$this->set('loadXCss', false);
$this->set('loadYCss', false);
$this->set('loadZCss', false);

次に、任意のコントローラーで、css を表示するかどうかを決定する必要があります。

$this->set('loadZCss', true);

そして最後に、レイアウトで:

<?php
echo this->Html->css('main.css', null, array('media' => 'screen,projection'));
if ( $loadXCss ) echo this->Html->css('x.css', null, array('media' => 'screen,projection'));
if ( $loadYCss ) echo this->Html->css('y.css', null, array('media' => 'screen,projection'));
if ( $loadZCss ) echo this->Html->css('z.css', null, array('media' => 'screen,projection'));
?>
于 2013-06-19T07:37:29.187 に答える
1

AppController::beforeRender() 関数内。次の行を追加します。

$this->set('controller_name', $this->name);

default.ctp ファイルでは、$controller_name viewVar に基づいてiforステートメントを実行し、その値に基づいて CSS/JS を表示できます。switch

または、他の CSS および JS ファイルにオーバーライドを追加して、表示する特定のビューごとに個別に呼び出すこともできます。

于 2013-06-19T07:24:24.830 に答える