Drupal hook_submit запись в БД - PullRequest
       1

Drupal hook_submit запись в БД

0 голосов
/ 01 февраля 2012

Сейчас я беру на себя задачу создания собственного модуля.

Я начал с малого, только чтобы попробовать и понять друпские хуки и модули.

Я создал простую форму с одной текстовой записью, единственное подтверждение состоит в том, что поле не пустое.

В форме отправки я хотел бы написать в пользовательскую таблицу. Таблица существует.
Мои поля:
nid int (11)
eid int (11) Автоинкремент первичного ключа
название varchar (50)

Вот моя форма:

function my_module_my_form($form_state) {
$form['esp'] = array(
  '#type' => 'fieldset',
  '#title' => t('Add a ESP'),
  '#collapsible' => TRUE,
  '#collapsed' => FALSE,

);
$form['esp']['title'] = array(
  '#type' => 'textfield',
  '#title' => t('ESP Name'),
  '#required' => TRUE,
  '#default_value' => '',
  '#description' => "Enter the ESP Name",
  '#size' => 20,
  '#maxlength' => 20,
);

$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Submit'),
);
return $form;
 }

и вот hook_submit(), который я настроил:

function my_module_my_form_submit($form, $form_state) {
db_query("INSERT INTO my_module_esp (title) VALUES (".$form_state['values']['title'].")");
drupal_set_message(t('The form has been submitted.'));
}

Но это не работает ... какие-либо предложения? Также я хотел бы добавить последний nid в эту таблицу, как мне получить это значение и обновить его в БД, чтобы оно не влияло на другие модули?

Любая помощь будет высоко ценится

1 Ответ

1 голос
/ 01 февраля 2012

Вам необходимо принять во внимание иерархию формы.Попробуйте использовать:

function my_module_my_form_submit($form, $form_state) {
  db_query('INSERT INTO {my_module_esp} (title) VALUES ("%s")', $form_state['values']['esp']['title']);
  drupal_set_message(t('The form has been submitted.'));
}

Если вам нужно назначить этот nid, вам нужно создать узел в своем коде, чтобы 301 действительно действительно ассоциировался с чем-то.Первичным ключом в таблице узлов является auto_increment, поэтому, если вы не создадите узел в этом коде, тогда кто-то другой может создать запись в блоге и получить 301. Используйте node_save () для созданияузел

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...