Первый пост о переполнении стека ... так что будьте осторожны со мной!
Похоже, не существует подходящего решения проблемы множественного обратного вызова Drupal FAPI для простой отправки формы.
ПРОБЛЕМА. Моя форма при отправке добавляет две записи в соответствующую таблицу базы данных.Учитывая, что есть только один вызов, чтобы добавить его в базу данных, я думаю, можно с уверенностью предположить, что запрос выполняется дважды (отсюда и двойные записи).
Следующий код может помочь обеспечить основу длярешение.О, это тоже Drupal 7, так что документация все еще в значительной степени ориентирована на D6.
function mymodule_sidebar_form_add_submit(&$form, &$form_state) {
$form_values = $form_state['values'];
$se_title = check_plain(trim($form_values['title']));
$se_link = url(trim($form_values['link']));
$se_content = check_plain(trim($form_values['content']));
$se_image = isset($form_values['image']) ? $form_values['image'] : '';
// The multi-line part below is actually a single line the real code
$query = sprintf("INSERT INTO sidebar_element(title, image_url, content)
VALUES ('%s', '%s', '%s');", $se_title, $se_image, $se_content);
db_query($query);
drupal_set_message(t('Sidebar Element has been added successfully.'));
}
... и моя функция формы содержит кнопку отправки:
$form['submit'] = array(
'#value' => t('Add Sidebar'),
'#type' => 'submit',
'#title' => t('Add Sidebar'),
'#submit' => array('mymodule_sidebar_form_add_submit'),
);
Наверное, вопросыМне нужно ответить:
- Почему двойной ответ на первом месте?
- Есть ли способ идентифицировать первый обратный вызов?
Заранее всем спасибо.