我在Zend应用程序中启用jQuery时遇到很多问题,但我现在可以在视图中显示如下所示的datePicker:
查看:index.phtml
echo $this->datePicker("dp1",
'',
array(
'defaultDate' =>
date('Y/m/d', time())));
问题是我想手动放置jQuery元素并使用这样的javascript文件管理它们:
查看:index.phtml
$this->jQuery()->AddJavascriptFile($this->baseUrl().'/js/jq.js');
...
echo "Pick your Date: <div id='datePicker'></div>"
脚本:jq.js
$(document).ready(function(){
$("#datePicker").datepicker();
alert('hello');
});
但它不起作用,没有警报,并且div中没有内联的datePicker。
注意:已加载css,jQuery,jQuery-ui和jq.js.
这是我的配置:
bootstrap:
function _initViewHelpers(){
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$view = $layout->getView();
$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
$view->addHelperPath('App/View/Helper/', 'App_View_Helper');
$view->addHelperPath('ZendX/JQuery/View/Helper',
'ZendX_JQuery_View_Helper');
ZendX_JQuery_View_Helper_JQuery::enableNoConflictMode();
$view->jQuery()
->setLocalPath('../js/jquery-1.5.1.min.js')
->setUILocalPath('../js/jquery-ui-1.8.13.custom.min.js')
->addStyleSheet('../css/flick/jquery-ui-1.8.13.custom.css');
ZendX_JQuery::enableView($view);
Zend_Dojo::enableView($view);
$view->dojo()
->setLocalPath('/public/js/dojo/dojo.js')
->addStyleSheetModule('dijit.themes.tundra')
->setDjConfigOption('parseOnLoad', true)
->disable();
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer');
$viewRenderer->setView($view);
}
布局:
echo $this->jQuery();
我在布局和视图中对此进行了测试,但它也不起作用:
$this->jQuery()->enable();
$this->jQuery()->uiEnable();
有人有想法吗?我在这个问题上坚持了2天......
[编辑] 我必须以这种方式在我的视图底部设置js文件:
echo $this->headScript()->appendFile('/public/js/jq.js');
echo $this->headScript()->appendFile('/public/js/jquery-1.5.1.min.js');
echo $this->headScript()->appendFile('/public/js/jquery-ui-1.8.13.custom.min.js');
echo $this->headLink()->appendStylesheet('/public/css/flick/jquery-ui-1.8.13.custom.css');
它有效,但我现在要找到一种方法来管理tundra样式表和jquery-ui样式表之间的冲突,因为dojo的样式表设置如下<body class="tundra">
答案 0 :(得分:0)
除非你真的因为某种原因必须与Zend Framework集成,否则我建议你保持简单,只需在你的布局或脚本中包含jQuery文件,就像在常规网站上一样。您可以轻松地将特定于页面的脚本添加到任何视图脚本中:
$this->headScript()->appendFile("/path/to/myPage.js");
我发现这比使用Zend的jQuery函数更简单易行。