ビューヘルパーを使用して、コントローラー/ビューごとにjavascriptおよびcssファイルをロードできます。これは私が実験したものであり、非常に役立つと思います。まだライブプロジェクトに組み込むステップを踏んでいませんが、まだ評価中です。
これが私がアイデアを得たdevzoneの記事です。テクニックを投稿してくれたAndyBairdの功績です。
基本的に、2つのビューヘルパーを設定します。1つはjavascript用です。-
class Zend_View_Helper_JavascriptHelper extends Zend_View_Helper_Abstract
{
function javascriptHelper() {
$request = Zend_Controller_Front::getInstance()->getRequest();
$file_uri = 'media/js/' . $request->getControllerName() . '/' . $request->getActionName() . '.js';
if (file_exists($file_uri)) {
$this->view->headScript()->appendFile('/' . $file_uri);
}
}
}
1つはcss用です:-
class Zend_View_Helper_CssHelper extends Zend_View_Helper_Abstract
{
function cssHelper() {
$request = Zend_Controller_Front::getInstance()->getRequest();
$file_uri = 'media/css/' . $request->getControllerName() . '/' . $request->getActionName() . '.css';
if (file_exists($file_uri)) {
$this->view->headLink()->appendStylesheet('/' . $file_uri);
}
return $this->view->headLink();
}
}
次に、レイアウトスクリプトからそれらを呼び出します。-
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My app title</title>
<? $this->headLink()->appendStylesheet('/media/css/global.css') ?>
<? $this->headLink()->appendStylesheet('/media/css/iefix.css','screen','lt IE 7') ?>
<?= $this->cssHelper() ?>
<? $this->headScript()->appendFile('/media/js/jquery-1.3.2.min.js') ?>
<? $this->headScript()->appendFile('/media/js/global.js') ?>
<? $this->javascriptHelper() ?>
<?= $this->headScript() ?>
</head>
次に、javascriptファイルとcssファイルを、それらが使用されるアクションの名前を反映するフォルダーに保存します。次に例を示します。
media / js / index / index.js
media / css / index / index.css
インデックスアクションのcssとjavascriptをロードします。
js
実際には、javascriptとcssを同じフォルダーに配置することが望ましいことがわかったため、上記のパスの&css
部分を見逃し、それに$file_url
応じて両方のヘルパーの変数を調整します。