Zend Framework: обработка нескольких записей базы данных в одной форме в виде флажков - PullRequest
0 голосов
/ 17 февраля 2010

Я новичок в Zend Framework, но сделал первые шаги с ним успешно. До сих пор я создал несколько Zend_Forms, которые отображают отдельные записи моей модели к полям формы. Я обработал формы с классами форм для каждого случая. Это работает все очень хорошо до сих пор.

Теперь у меня возникла ситуация, когда я должен назначить функции продукту. Особенности и продукты являются частью моего приложения. Особенности хранятся в моей базе данных в трех таблицах. Для каждой функции есть одна запись в третьей таблице.

  • Первый - это группа объектов, в которой сохранено имя группы объектов. Каждая функция должна быть отнесена к группе объектов.

  • Вторая таблица - таблица характеристик. Эта таблица имеет внешний ключ для группы объектов и название функции.

  • Третья таблица - это некое отношение «многие ко многим», которое связывает характеристики с продуктами. В этой таблице есть дополнительное поле, которое содержит необязательное значение (кроме двух внешних ключей) для этой уникальной функции продукта.

Например: если продукт имеет вес 4,78 кг, значение «4,78» сохраняется в третьей таблице, а метка «вес% s кг» сохраняется во второй таблице. Группа объектов может быть чем-то вроде «физических атрибутов», сохраненных в первой таблице.

Короче говоря: Моя проблема в том, как справиться со случаем, когда мне нужно создать и отредактировать несколько записей базы данных в одной форме . План состоит в том, чтобы иметь форму с множеством флажков для каждой функции, по которой элементы тематически сгруппированы . Каждый флажок должен иметь дополнительное текстовое поле для ввода дополнительных значений.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2010

вы можете создать собственный класс формы, расширяющий Zend_Form, и использовать его для своих классов. Он может принимать экземпляры конструкции ваших моделей и создавать входные данные формы на основе этих моделей. После проверки формы в вашем контроллере вы можете сделать

$values = $form->getValues();

и используйте этот массив для повторного заполнения ваших моделей

0 голосов
/ 18 февраля 2010

Вы можете попробовать создать подчиненные формы (Zend_Form_SubForm) внутри своего класса формы.Это может разделить поля для разных таблиц.Для редакции, в вашем контроллере, когда вы извлекаете все данные из таблиц дерева, вы можете заполнять подчиненные формы, которые соответствуют таблицам.

0 голосов
/ 17 февраля 2010

Вы можете попробовать расширить Zend_Form для создания собственных элементов.

Вы сможете написать класс, который подключается к БД для получения атрибутов (функций и продуктов).

Предполагая, что вы написали My_Form_Element_Features & My_Form_Element_Products классов, вы можете сделать $features = new My_Form_Features(); и затем использовать методы базового класса, такие как getValues(), populate() и т. Д.

Вы можете посмотреть там, чтобы начать:

-

Чтобы ответить на ваш комментарий, вы можете использовать:

Zend_Form::setElementsBelongTo($array):

Дополнительную информацию можно найти на Страница справочника Zend_Form Advanced .

...