Drupal: изменение пользователя при регистрации - PullRequest
0 голосов
/ 16 декабря 2009

Мне нужно было создать пользовательский список выбора для страницы регистрации пользователя, которая извлекает SQL-запрос из узлов, которые мне нужно связать с пользователями. Я успешно выполнил эту задачу ..:)

Однако, когда я отправляю значение, я не могу контролировать, где хранится значение. На самом деле, я не могу хранить значение вообще. Я создал настраиваемое поле для своего значения, но сохраняется только новое имя поля, оно сериализуется и сохраняется в столбце «Данные» пользовательской таблицы.

Ниже мой код, я прокомментировал мои проблемы в нем. Любая помощь будет оценена!

 <?php
    // $Id$

       //create the additional user form field, a select list named "account_name"
       //then calls the next function to populate it.
      function accountselect_user($op, &$edit, &$account, $category = NULL) {
        if ($op == 'register' || 'edit')
        $fields['Information']['account_name'] = array(
        '#type' => 'select',
        '#title' => 'Account',
        '#description' => t('Select the account to which the contact belongs'),
        '#options' => accountselect_getclubs() ,
        );
        return $fields;
      }

      //contains query to pull results to select list...this part is working
      function accountselect_getclubs() {
          $return = array();
          $sql = 'SELECT DISTINCT `title` FROM node WHERE type = \'accounts\' ';
          $result = db_query($sql);
        while ($row = db_fetch_array($result)) {
           $return[] = $row['title'];
         }

        return $return;
      }

      //CAN'T GET THIS PART TO WORK - query to update the row - the uid = 29 is for
      //testing puposes. Once I get the test value to work
      //the test value I will worry about updating the correct user.
      function accountselect_submitaccount() {
         $sql = "UPDATE users SET account = \'value\' WHERE uid = \'29\'";
         db_query($sql);
         drupal_set_message(t('The field has been updated.'));
      }

      //I SUSPECT THE PROBLEM IS HERE...call the submitaccount function.
      //I have tried hook_form_alter as well...
      function accountselect_submit(&$form, &$form_state) {
        if($form_id == 'user-register')
        drupal_execute('accountselect_submitaccount');
      }

1 Ответ

0 голосов
/ 16 декабря 2009

Вы проверяли логи Drupal? Это должно выдавать ошибки, так как это неверный запрос.

$sql = "UPDATE users SET account = \'value\' WHERE uid = \'29\'";

Должно быть:

$sql = "UPDATE users SET account = 'value' WHERE uid = '29'";

Дополнительно в:

function accountselect_submit(&$form, &$form_state) {
  if($form_id == 'user-register')
  drupal_execute('accountselect_submitaccount');
}

$form_id никогда не определяется.

Вы говорите, что создали поле в базе данных, но оно должно совпадать с именем поля Drupal, которое будет обрабатываться автоматически. У вас есть два разных имени - account_name в поле Drupal, но account в базе данных. Сделайте их согласованными, и они должны обрабатываться автоматически, функции отправки не требуются.

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