Использование Zend Form и Dojo без использования ZF MVC - PullRequest
1 голос
/ 20 июня 2011

для наших приложений мы используем Zend_form, без какой-либо части стека ZF MVC.Мы хотели бы создавать динамические формы (Javascript, Ajax powered), мы ищем Dojo, но он не работает "из коробки".Интерактивная документация Zend Framework не помогла, потому что все примеры говорят о Zend_Form в приложениях MVC.

Где наша ошибка?Чего нам не хватает?Вот код:

$oViewZF = new Zend_View();
Zend_Dojo::enableView($oViewZF);
$oViewZF->addHelperPath(PATH_ZF . '1.11.4/library/Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
$oViewZF->dojo()->setCdnVersion('1.1.1');
$oViewZF->dojo()->setLocalPath('dojo/dojo/dojo.js')->addStyleSheetModule('dijit.themes.tundra');

$form = new Zend_Dojo_Form();
$form->setAction($url)->setMethod('post')->setTranslator(self::ZendFormTranslate());
$form->addPrefixPath('Zend_Dojo_Form', 'Zend/Dojo/Form/')
       ->addElementPrefixPath('Zend_Dojo_Form', 'Zend/Dojo/Form/')
       ->addDisplayGroupPrefixPath('Zend_Dojo_Form', 'Zend/Dojo/Form/');
$form->setDecorators(array('FormElements', array('TabContainer', array('id' => 'tabContainer', 'style' =>
'width: 600px; height: 500px;', 'dijitParams' => array('tabPosition' => 'top'))), 'DijitForm'));

echo $oViewZF->headScript(); #show nothing
echo $oViewZF->dojo(); #print "style @import dojo/dijit/themes/tundra/tundra.css"; and <script type="text/javascript" src="dojo/dojo/dojo.js"></script>
echo $oViewZF->layout()->content; #show nothing
echo $oViewZF->inlineScript(); #show nothing

$birthday = new Zend_Dojo_Form_Element_DateTextBox('birthday');
$birthday->setLabel('Birthday');
$form->addElement($birthday);
$form->addElement('submit', 'cmd', array('label' => 'Créer'));
echo $form->render($oViewZF);

Он показывает только текстовое поле ввода без какой-либо ошибки JS:

<dt id="birthday-label"><label for="birthday" class="optional">Birthday</label></dt>
<dd><input id="birthday" name="birthday" value="" type="text"></dd>

Мы хотели бы использовать средства выбора даты, поля обязательны для заполнения / видимы только когдафлажок установлен и т. д.

С уважением,
Cédric

ps: если я размещу $ oViewZF-> Dojo () (см. Zend_Dojo_Form в макете * 1015)*) после вызова render () у меня появляется эта ошибка JS

Ошибка: необработанное исключение: [Exception ... "Строка содержит недопустимый символ" code: "5" nsresult: "0x80530005 (NS_ERROR_DOM_INVALID_CHARACTER_ERR) "местоположение:" http://127.0.0.1/~cedric/EC/VOOELFE/code/decideur/public/dojo/dojo/_base/_loader/bootstrap.js Строка: 1930 "]

1 Ответ

2 голосов
/ 20 июня 2011

Хорошо, вот ответ:

$oViewZF = new Zend_View();

Zend_Dojo::enableView($oViewZF);
$oViewZF->addHelperPath(CHEMIN_ZF . '1.11.4/library/Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
$oViewZF->dojo()->setLocalPath('dojo/dojo/dojo.js')->addStyleSheetModule('dijit.themes.tundra');

$form->addPrefixPath('Zend_Dojo_Form', 'Zend/Dojo/Form/') 
    ->addElementPrefixPath('Zend_Dojo_Form', 'Zend/Dojo/Form/') 
    ->addDisplayGroupPrefixPath('Zend_Dojo_Form', 'Zend/Dojo/Form/');

echo $form->render($oViewZF);
echo $oViewZF->dojo();
echo $oViewZF->inlineScript();

Вызов dojo () должен быть после вызова render (), и одно из моих полей было неправильно объявлено и создало ошибку JS.

...