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');

そしてそれは機能しますが、dojoのスタイルシートはこのように設定されているため、tundraのスタイルシートとjquery-uiのスタイルシートの間の競合を管理する方法を見つける必要があります<body class="tundra">

4

1 に答える 1

0

何らかの理由で本当にZendFrameworkと統合する必要がない限り、単純に保ち、通常のWebサイトの場合と同じようにレイアウトまたはスクリプトにjQueryファイルを含めることをお勧めします。ページ固有のスクリプトを任意のビュースクリプトに簡単に追加できます。

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

これは、ZendのjQuery関数をいじるよりも簡単で簡単であることがわかりました。

于 2011-06-24T13:17:35.910 に答える