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