Добрый вечер, коллеги!
Появилось пара вопросов по Forms API, подскажите, пожалуйста, решение. Рисую форму, которая имеет несколько однотипных строк с одинаковым набором полей. Выглядит примерно так:
Предположим, что форму отображаем на странице ноды с id 53.
Селект (обязательный): Малина (value = 1), Черника (value = 2), Брусника (value = 3), Клюква (value = 4). Селект (необязательный): 1-10.
Селект (обязательный): Малина (value = 1), Черника (value = 2), Брусника (value = 3), Клюква (value = 4). Селект (необязательный): 1-10.
Селект (обязательный): Малина (value = 1), Черника (value = 2), Брусника (value = 3), Клюква (value = 4). Селект (необязательный): 1-10.
После отправки на сервер данные должны сохраняться в мою таблицу вида:
nid, berry, rate
53, 1, 8
53, 4, 0
53, 2, NULL
Как видно, каждая строка формы сохраняется в отдельной строке таблицы, там есть общий идентификатор (nid), значения для обязательного селекта и значения необязательного селекта. Вопросы следующие:
1. Есть select с набором опций 0-10. Выбор значения не является обязательным. Пользователь должен указать его только в том случае, если знает/хочет выбрать конкретную цифру. Соответственно, #required стоит false. Но я не могу найти, как сделать так, чтобы в том случае, если пользователь не выбрал руками ни одной опции, на сервер не отправлялось ничего (там тогда по дефолту будет выставлен NULL). В данной ситуации всегда отправляется значение 0 (потому что это первый вариант в списке опций). Возможно, ответ лежит на поверхности, но я уже несколько часов не могу понять, каков он Как сделать первую пустую опцию без value?
2. Данные должны сохраняться в мою таблицу и хочется дать возможность с помощью той же формы эти данные редактировать. Как правильно выбирать и подставлять данные? Писать функцию, которая делает select к моей таблице и подставляет в каждой строке значения для каждого input через default_value?
3. Как передать в форме то, что значения каждой строки этой формы должны записываться в отдельную строку таблицы? Объединять каждую строку в отдельный fieldset или как-то ещё?
Комментарии
В чем рисуете paint, photoshop, corel? Поделитесь технологией...
1. Напишите в первый option необязательного селекта что то типа невыбрано. А в коде проверку если 0 то а лучше храните 0 и считайте его не выбранным.
2.Да делаете запрос и формируете $formstate. Потом формируете из formstate $form дальше используйте hook_validate для валидации и hook_submit для сохранения, там пишите запросы к бд куда и как сохранить данные из $formstate;
3.Оберните fieldset и потом в submit переберите по fieldset и выполните 3 запрос на insert или update.
Так как у меня там целочисленные значения, и в качестве одного из значений есть 0, потому я бы предпочёл не назначать пустому пункту 0.
Спасибо!