Блог пользователя - nikserg

Дополнение user_access

26 сентября 2011 в 14:53

Здравствуйте.
Нужно реализовать некоторую надстройку над стандартной системой прав доступа Друпала.
Суть в следующем: мы должны иметь возможность написать, например

Работа с полями формы

6 сентября 2011 в 16:48

Здравствуйте!
Вопрос, возможно, не из сложных, но ответа на него так и не нашел.
Собственно, каким образом нужно корректно работать с полями форм в процессе валидации/отправки?
Приведу конкретный пример, с которым я зашел в тупик, но вопрос, в целом, глобальный. Я использую Drupal 7, но изменения в Forms API не очень большие, как я мог заметить.
Итак, я изменяю форму редактирования поля для некоторого типа материала (ID формы field_ui_field_edit_form). Тип поля - ссылка на термин таксономии. Использую хук form_alter и добавляю на форму новый textfield.
Моя задача: сделать так, чтобы пользователь мог определять значение для поля по умолчанию как в стандартном виджете, так и в добавленном мной textfield'е, причем мой имеет приоритет. Проще говоря, нужно заменить значение в стандартном виджете на новое, при отправке формы.
Проблема: $form и $form_state представляют собой огромную глыбу нечитабельных вложенных массивов, в которых значения дублируются по несколько раз. Допустим, я назначил #submit'у формы свой обработчик, но где изменять значения - непонятно. Существует огромное множество разных типов полей и форм, и в каждом случае нужное значение оказывается где-то в новом месте.
Существует ли какой-нибудь подробный мануал по структуре этих массивов, функции, обеспечивающие работу с ним? Нашел только form_set_value, да и она почему-то не изменяет ничего. Просто не может быть, чтобы не существовало унифицированных функций для работы со всем этим добром.