Переменные в hook_user

Главные вкладки

Аватар пользователя Cynicus Cynicus 5 февраля 2010 в 5:06

Доброго времени суток!

Пытаюсь понять некоторые моменты. С помощью hook_user добавляю поля с именем в форму регистрации через 'register' и получаю некие данные. При попытке сохранить их через 'insert' спотыкаюсь - интересует, какие переменные должны быть в данном запросе db_query. С первым из трех ключей понятно - $user->uid, а вот два других - вопрос.

function person_user ($op, &$edit, &$user, $category = NULL) {
  switch ($op) {
    case 'register':
      $fields['person_info'] = array (
        '#type' => 'fieldset',
        '#title' => t('Personal Info'),
        '#description' => t('Enter first and last name.')
      );
      $fields['person_info']['first_name'] = array (
        '#type' => 'textfield',
        '#title' => t('First Name'),
        '#maxlength' => 16,
        '#required' => TRUE,
        '#size' => 18,
      );
      $fields['person_info']['last_name'] = array (
        '#type' => 'textfield',
        '#title' => t('Last Name'),
        '#maxlength' => 16,
        '#required' => TRUE,
        '#size' => 18,
      );
    return $fields;
    case 'insert':
      db_query("INSERT INTO {person} (uid, firstname, lastname) VALUES (%d, %s, %s)", $user->uid, ???, ???);
    break;
  }
}

Комментарии

Аватар пользователя Cynicus Cynicus 5 февраля 2010 в 18:40

В api даже атеизм позволил заглянуть, и не один раз. Не помогло. Переменная очевидна, ключ - нет.

Сейчас пробую заново освоить то, что давно забыл, а с PHP вообще знаком не был. Просто перерос конструирование из готовых модулей, для развития требуется новый опыт, новые знания. Потому для меня важен не столько ответ на конкретный вопрос, сколько понимание сути происходящего.

Аватар пользователя direqtor direqtor 5 февраля 2010 в 19:00

ЕМНИП, $edit['first_name'] будет соответствовать $fields['person_info']['first_name'], но на всякий случай пропарсите эту переменную перед инсертом любым доступным способом.

Аватар пользователя direqtor direqtor 5 февраля 2010 в 19:01

"Cynicus" wrote:
перерос конструирование из готовых модулей, для развития требуется новый опыт
Тогда придётся учить PHP и API системы. Иначе этого опыта не будет.

Аватар пользователя Cynicus Cynicus 6 февраля 2010 в 5:03

"direqtor" wrote:
ЕМНИП, $edit['first_name'] будет соответствовать $fields['person_info']['first_name'], но на всякий случай пропарсите эту переменную перед инсертом любым доступным способом.

Спасибо, оно.

"direqtor" wrote:
Тогда придётся учить PHP и API системы. Иначе этого опыта не будет.

Естественно. Только опыт надо получать на конкретных задачах, чтение умных книжек само по себе эффект дает минимальный.

Аватар пользователя direqtor direqtor 6 февраля 2010 в 12:46

Книжки (обобщающий материал)+ Документация (подробный и конкретный материал с примерами того, как надо) + Уже работающий код системы (чужой опыт и пример того, как надо).

Как-то так.

Аватар пользователя Dan Dan 6 февраля 2010 в 16:59

На формирование вложенных переменных влияет параметр '#tree', по умолчанию у становленный в false

Аватар пользователя Cynicus Cynicus 8 февраля 2010 в 1:45

"direqtor" wrote:
Книжки (обобщающий материал)+ Документация (подробный и конкретный материал с примерами того, как надо) + Уже работающий код системы (чужой опыт и пример того, как надо).
Как-то так.

Так и получается. Вандюк как основной справочник + api.drupal.org + оттуда же код, где используется. Но всегда работает, для hook_user использующих функций всего две, для понимания не хватило.