Пользовательские файлы JavaScript с Zendx_JQuery - PullRequest
0 голосов
/ 24 июня 2011

У меня было много проблем с включением jQuery в моем приложении Zend, но теперь я могу отобразить экземпляр DatePicker, например, в виде:

view: index.phtml

echo $this->datePicker("dp1",
        '',
        array(
           'defaultDate' =>
               date('Y/m/d', time())));

Проблема в том, что я хотел бы разместить элементы jQuery вручную и управлять ими с помощью файла javascript следующим образом:

view: 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.

примечание: загружены 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">

1 Ответ

0 голосов
/ 24 июня 2011

Если вам действительно не нужна интеграция с Zend Framework по какой-либо причине, я предлагаю вам сделать это простым и просто включить файлы jQuery в свой макет или сценарии, как на обычном веб-сайте. Вы можете легко добавить специфичные для страницы скрипты в любой скрипт вида:

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

Я обнаружил, что это проще и легче сделать, чем связываться с функциями Zend jQuery.

...