在Zend Framework里,使用helper,基于控制器和动作的名称,自动加载javascript文件

mkdir application/views/helpers/ -p && touch application/views/helpers/LoadInlineJs.php

Vim LoadInlineJs.php, 输入以下代码:

<?php
class Zend_View_Helper_LoadInlineJs extends Zend_View_Helper_Abstract
{
function loadInlineJs ($folderPath = "js/application/") {
$request = Zend_Controller_Front::getInstance()->getRequest();
$file_uri = $folderPath . $request->getControllerName() . '/' . $request->getActionName() . '.js';
if (file_exists($file_uri)) {
$this->view->inlineScript()->appendFile('/' . $file_uri, 'text/javascript');
}
}
}

在布局模板里(application/layouts/scripts/layout.phtml)的结尾"body"标签之间,加入以下输出js的代码:

<?php
$this->loadInlineJs() ;
echo( $this -> inlineScript()."\n");
?>

创建一个js,比如: makdir -p public/js/application/index/ && touch public/js/application/index/index.js
用浏览器打开页面的源代码,应该可以看到如下的输出:

<div style="display:none;">
<script type="text/javascript" src="/js/application/index/index.js"></script>
</div>
</body>

所以,基本的规则就是自动加载src="/js/application/controllerName/actionName.js"的js文件,当然,前提是这个文件存在。

也就是说,如果某一个action需要特别的js,按照控制器和动作的名称创建相应的js文件就可以了。

Chinese, Simplified(简体中文)

添加新评论