LINUX.ORG.RU

[zend][dojo] работа с формами

 


0

1

Использую Zend_Dojo_Form для создания форм. При этом на странице автоматом формируется скрипт следующего вида:

dojo.require("dijit.form.ComboBox");
    dojo.require("dijit.form.NumberSpinner");
    dojo.require("dijit.form.TextBox");
    dojo.require("dijit.form.Form");
    dojo.require("dojo.parser");
dojo.addOnLoad(function() {
    dojo.forEach(zendDijits, function(info) {
        var n = dojo.byId(info.id);
        if (null != n) {
            dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
        }
    });
    dojo.parser.parse();
});
var zendDijits = [{"id":"id","params":{"autocomplete":"true","required":"true","dojoType":"dijit.form.ComboBox"}},{"id":"count","params":{"required":"true","constraints":"[]","dojoType":"dijit.form.NumberSpinner"}},{"id":"articul","params":{"required":"false","dojoType":"dijit.form.TextBox"}},{"id":"weight","params":{"required":"false","dojoType":"dijit.form.TextBox"}},{"id":"price","params":{"required":"false","dojoType":"dijit.form.TextBox"}},{"id":"addRequestElementForm","params":{"dojoType":"dijit.form.Form"}}];

Как я понял он позволяет производить валидацию форм прямо на странице

Layout на странице объявлены декларативно и парсинг виджетов производится при загрузке страницы автоматом.

<div dojoType="dijit.layout.BorderContainer">
            <div dojoType="dijit.layout.ContentPane">
                    <!--тут производится вывод формы-->
            </div>
</div>

лишние атрибуты убрал для краткости.
Вот тут возникает трабл: виджеты на странице парсятся при загрузке страницы, потом вся страница заново разбирается самым первым скриптом (см. выше) и в логи лезут ошибки типа: Tried to register widget with id==dijit_layout_BorderContainer_0 but that id is already registered

Что делать и кто виноват?

> . При этом на странице автоматом формируется скрипт следующего вида

автоматом


до куда доджа докотилась =) long-long ago in a far-far galaxy, вроде бы, все инклуды надо было ручками писать

а кто это генерит, если не секрет?

потом вся страница заново разбирается самым первым скриптом


браузер какой?

если IE, была у них где-то на сайте дока, как хакать IE

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

а кто это генерит, если не секрет?

Скрипт генерится где-то в недрах хелпера dojo, который во view. Генерация происходит если виджеты на странице формировать при помощи php-кода, например как форму у меня. Если объявлять декларативно в html, то не появляется. Если использовать 2 этим способа, то лог засирается ошибками.

браузер какой?

пробовал firefox 6, chromium, opera, rekonq, ie 8-9 - одно и тоже

forkhammer
() автор топика
Ответ на: комментарий от forkhammer

Ты форму делаешь кодом, а layout декларативно? А если и то, и то сделать одинаково (и форму и layout кодом, например)?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Пробую сделать все кодом - не помогает.

Делать формы декларативно слишком муторно, по-любому нужна программная форма для валидации на сервере. Получиться одна и та же форма сделанная в 2-х вариантах.

Тут я вижу 2 выхода:
1. Отключить генерацию скрипта для валидации форм на странице. Пока не знаю как, гугление результатов не дало.
2. Не использовать Zend_Dojo_Form, вместо него Zend_Form. Хотя виджеты Dojo такия няшные ^_^

forkhammer
() автор топика

Разобрался.
Виноват не Dojo, а мой говнокод: когда инициализация Zend_Dojo производиться в layout происходит смешение программного создания виджетов (тот самый генерируемый скрипт) и декларативного - отсюда и растут ноги всех моих проблем.

</thread>

forkhammer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.