0

我在 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 已加载。

这是我的配置:

引导程序:

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">

4

1 回答 1

0

除非出于某种原因您真的必须与 Zend Framework 集成,否则我建议您保持简单,只需在布局或脚本中包含 jQuery 文件,就像在常规网站上一样。您可以轻松地将特定于页面的脚本添加到任何视图脚本:

$this->headScript()->appendFile("/path/to/myPage.js");

我发现这比使用 Zend 的 jQuery 函数更直接、更容易做到。

于 2011-06-24T13:17:35.910 回答