как использовать drupal_write_record.мой БД не обновляется при отправке формы - PullRequest
0 голосов
/ 03 ноября 2011

Я использую drupal и пытаюсь создать свою собственную форму в блоке.

Я написал модуль, который создает блок с кнопкой отправки.

Когда форма отправлена, я пытаюсь записать значения в мою базу данных.

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

function my_module_my_form_submit($form, &$form_state) {
    block_example_insert_credits($credits_record);
}

function block_example_insert_credits() { 
  global $user;
  $credits_record = array(
    'nid' => $node->nid,
    'uid' => $user->uid,
    'credits' => $form_state['values']['bids'],
  );
  drupal_write_record('example_table', $credits_record, 'nid');
}

, форма отправляет и проверяет, а таблица истолбцы существуют в моей БД.Когда я отправляю форму, в базу данных ничего не отправляется, почему мой код неверен?

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Есть несколько не совсем правильных вещей:

  1. Вы не передаете никаких параметров block_example_insert_credits()
  2. У вас нет ссылки на $credits_record в my_module_my_form_submit(), поэтому в любом случае функция вставки ничего не будет передана.
  3. Вы пытаетесь получить доступ к $form_state из функции, в которой она не существует
  4. У вас нет ссылки на объект узла, поэтому вы не можете его использовать. $node не является общедоступной переменной, если вам нужен объект узла, он должен исходить из значения, сохраненного в вашей форме, или из функции menu_get_object() (если блок отображается на странице узла).

Попробуйте этот код и посмотрите, повезет ли вам:

function my_module_my_form_submit($form, &$form_state) {
  block_example_insert_credits($form_state);
}

function block_example_insert_credits($form_state) {
  global $user;
  $node = menu_get_object();
  $credits_record = array(
    'nid' => $node->nid,
    'uid' => $user->uid,
    'credits' => $form_state['values']['bids'],
  );
  drupal_write_record('example_table', $credits_record, 'nid');
} 

Надеюсь, это поможет.

1 голос
/ 03 ноября 2011

Я новичок в Drupal, поэтому извиняюсь, если я ошибаюсь ... разве это не $ node или & $ form_state, которые должны быть переданы методу вставки из form_submit? ...... возможно, вы могли бы проверить, используя watchdog для массива кредитных записей, чтобы проверить правильность передачи значений ... cheers

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