Drupal 6, форма FAPI представлена ​​дважды, почему? - PullRequest
0 голосов
/ 26 мая 2011

используя этот код:

drupal_set_message('form id: ' .$form_id. ' send with '. $delta . ' and field: '. $field);

Я замечаю, что каждый раз, когда я нажимаю кнопку £ send, форма отправляется дважды, поэтому я вижу что-то вроде этого:

идентификатор формы: formname2 отправить с 3 и поле ххх id формы: formname2 отправить с 4 и поле ххх

дельта $, которая изменяется, является дельтой многогруппового поля cck (я вставляю новое поле в содержимое cck). Вот функция отправки:

function IngredientsForm_submit($form, &$form_state){
    global $user;
    $ls_id = $user->ls_id;
    $current_ls = node_load($ls_id);    
    $delta = $form_state['values']['delta'];
    $field = $form_state['values']['field_name'];
    $form_id = $form_state['values']['form_id'];
    $current_ls->field_descrizione_ingrediente[$delta]['value'] = $field;
    drupal_set_message('form id: ' .$form_id. ' send with delta: '. $delta . ' and field: '. $field);
    node_save($current_ls);             
}

Странно, но в базе данных сохраняется только первая отправка, поэтому сохраненные данные верны ...

Есть идеи, почему существует двойное подчинение?

Ответы [ 2 ]

1 голос
/ 29 июля 2011

У меня была такая же проблема, я думаю, это то, как образуются друпальные процессы. Если вы переместите следующую строку

drupal_set_message('form id: ' .$form_id. ' send with delta: '. $delta . ' and field: '. $field);"

в функции отправки после того, как вы сохранили свои данные, вы обнаружите, что сообщение будет отображаться только один раз.

1 голос
/ 26 мая 2011

Я бы проверил переменную формы и увидел бы, если функция отправки указана более одного раза. Это может быть $ form ['# submit'] или $ form ['buttons'] ['submit'] ['# submit'] в зависимости от того, является ли это пользовательская форма или форма узла по умолчанию.

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

Если вы не видите, как вызывается дублирующий обработчик отправки, возможно, опубликуйте код, который создает / изменяет форму.

...