Для нашего нового проекта мы начали использовать Zend Framework 2 и Dojo 1.8. ZF2 имеет полностью переписанный модуль формы, который теперь содержит новый элемент CollectionElement для отношений "один ко многим". Что касается UI, я нахожу, что dgrid лучше подходит для таких отношений (используя плагин колонки редактора), поэтому я начал расширять FormCollection, FormRow и FormElement, чтобы они могли отображать желаемый dgrid. Все было в порядке, пока я не понял, что я не могу установить имена входных строк для виджетов dgrid.
Я начал работу с сборкой документации по документации ZF2. Видно, что элементы ввода коллекции имеют похожие на массив имена, например
order[products][0][name]
order[products][0][price]
order[products][1][name]
order[products][1][price]
С другой стороны, dgrid-конфигурация основана на столбцах, поэтому я могу иметь определение столбца, например
editor({
field: "_dojo_textbox_505ee3a390d705_26717315",
label: "Name",
editorArgs: {
name: "order[products][{index}][name]",
}
}, TextBox)
В этом определении столбца будет указано одинаковое имя виджетов для всех строк, которое не работает с требованием формата данных коллекции ZF2.
То, что я также пробовал, - это именовать столбец следующим образом:
order[products][]
который работает, но не позволяет желаемого формата
order[products][][name]
Возможно, есть способ опубликовать такие данные:
order[products][name][]
и после этого он преобразуется, но решение выглядит не так. Помимо этого, я пытаюсь создать код многократного использования и хочу избежать модификаций данных в каждой форме.
Поскольку я очень стараюсь избегать обработки событий onSubmit/onClick для преобразования данных, есть два возможных решения: 1. Сделайте dgrid способным задавать имена виджетов каждой строки 2. Сделайте форму ZF2 понятной для других типов, отличных от стандартного POST, для коллекций.
К сожалению, у меня кончились идеи, как можно сделать любое из этих решений, поэтому я буду очень благодарен, если вы можете дать мне руку с этим!
Так как это несколько связано с моим текущим вопросом, я поместил его здесь в качестве побочного вопроса: Что кроме этого пользовательского интерфейса вы используете для своих интерфейсов формы "один ко многим" с dojo?