Доброго времени суток!
Пытаюсь понять некоторые моменты. С помощью 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;
}
}
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;
}
}
Комментарии
А в API религия не позволяет заглянуть? [ru-api=hook_user]
&$edit The array of form values submitted by the user.
В api даже атеизм позволил заглянуть, и не один раз. Не помогло. Переменная очевидна, ключ - нет.
Сейчас пробую заново освоить то, что давно забыл, а с PHP вообще знаком не был. Просто перерос конструирование из готовых модулей, для развития требуется новый опыт, новые знания. Потому для меня важен не столько ответ на конкретный вопрос, сколько понимание сути происходящего.
ЕМНИП, $edit['first_name'] будет соответствовать $fields['person_info']['first_name'], но на всякий случай пропарсите эту переменную перед инсертом любым доступным способом.
Я вот одного не пойму, а кто не даёт посмотреть содержимое переменной?
Спасибо, оно.
Естественно. Только опыт надо получать на конкретных задачах, чтение умных книжек само по себе эффект дает минимальный.
Книжки (обобщающий материал)+ Документация (подробный и конкретный материал с примерами того, как надо) + Уже работающий код системы (чужой опыт и пример того, как надо).
Как-то так.
На формирование вложенных переменных влияет параметр '#tree', по умолчанию у становленный в false
Так и получается. Вандюк как основной справочник + api.drupal.org + оттуда же код, где используется. Но всегда работает, для hook_user использующих функций всего две, для понимания не хватило.