Использую 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
Что делать и кто виноват?