Понимаю, что нижеописанный способ является не совсем кошерным, но других способов я не нашел.
Дано - поле ссылка на термин, виджет автозаполнение
Что нужно - в поле, через запятую, пользователь вводит два целочисленных значения, нажимает сохранить, и значение вновь введенного поля перезаписывается строкой данных - представляющей из себя пошаговый диапазон между этими двумя числами. Например, пользователь вводит 10, 3, жмет сохранить и поле перезаписывается значением 10,9,8,7,6,5,4,3
Логику формирования строки я осуществил, вопрос как перезаписать значение поля? Пробовал через form_alter менять у поля дефолтное значение, но оно срабатывает только при повторном сохранении, то есть пользователь ввел 10,3 сохранил, открыл ноду, в поле уже 10,9,8,7,6,5,4,3, сохранил и только после этого поле перезаписывается в базе.
Есть мысли как, когда и чем воспользоваться, чтобы после сейва значение поля сохранялось.
Буду благодарен за мысли по делу.
Комментарии
а через hook_node_presave не прокатит?
не получится
* Implements hook_form_alter().
*/
function module_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'form') {
$form['#submit'][] = 'module_form_submit';
}
}
/**
* Submit callback for form FORM_ID.
*/
function module_form_submit(&$form, &$form_state) {
$values = &$form_state['values'];
if (!empty($values['field_my_field'])) {
$value = module_custom_logic($values['field_my_field'][LANGUAGE_NONE][0]['value']);
$values['field_my_field'][LANGUAGE_NONE][0]['value'] = $value;
}
}
Спасибо за ответы!
Решил по-другому)
По какому другому?