您可以使用视图助手在每个控制器/视图的基础上加载 javascript 和 css 文件。这是我已经尝试过的东西,我发现它很有帮助,虽然我还没有把它放到一个实际的项目中,但我仍在评估它。
这是我从中得到想法的 devzone 文章。所有功劳归于 Andy Baird 发布该技术。
基本上你设置了两个视图助手,一个用于 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);
}
}
}
一个用于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 文件存储在反映它们所使用的操作名称的文件夹中,例如:-
媒体
/js/index/index.js 媒体/css/index/index.css
为您的索引操作加载 css 和 javascript。
在实践中,我发现最好将 javascript 和 css 放在同一个文件夹中,所以我错过了上面路径的js
&css
部分,并相应地调整了$file_url
两个助手中的变量。