Подтвердить что ты не робот

Использование dgrid в коллекциях форм в приложении Zend Framework 2

Для нашего нового проекта мы начали использовать 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?

4b9b3361

Ответ 1

В Zend framework версии 2 сама "Zend\Form" имеет возможность динамически добавлять новые элементы в элемент "Коллекция".

Вы можете проверить его здесь