我已经和Zend Framework合作了几个月了.到目前为止,我已经成功地使用了一些视图助手,动作帮助器和局部视图.现在我遇到了一些我想在我的项目中使用的javascript库,比如TinyMCE和其他.
我的问题是,在Zend项目中实现这些的最佳方法是什么?我希望能够在视图级别添加或启用这些JavaScript库.因此,例如当我转到包含zend_form的addSomething.phtml时,我的一个文本区域变成了TinyMCE编辑器字段.但是我不想在我的所有表单甚至所有文本区域元素上使用它.
那么在ZF 1.11.11下实现并接近这些库的最佳方法是什么?
提前感谢任何给出的建议:)
解决方法:
您可以使用视图助手在每个控制器/视图的基础上加载javascript和css文件.这是我已经尝试过的东西,我发现它非常有用,虽然我还没有把它放到一个实时项目中,我还在评估它.
Here is the devzone article I got the idea from. 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文件存储在反映它们所用操作名称的文件夹中,例如: –
media/js/index/index.js
media/css/index/index.css
为您的索引操作加载css和javascript.
在实践中我发现最好将javascript和css放在同一个文件夹中,所以我错过了js& css上面路径的一部分,并相应调整两个助手中的$file_url变量.