Добавить в форму свои поля

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

Аватар пользователя lena_elena4 lena_elena4 20 апреля 2009 в 18:29

Мне нужно в стандартную форму добавления ноды добавить свои поля.
Делаю вот так:

function library_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'library_node_form') {
$form['#attributes'] = array('enctype' => "multipart/form-data");
  $form['upload'] = array(
  '#type' => 'file',
  '#title' => t('Upload'),
  '#size' => 40,
);
$form['author'] = array(
//параметры поля
  );
$form['zanr'] = array(
//параметры поля
  );

$form['#validate'] = 'library_add_form_validate';
}
}

Вызываю форму:

function library_form($node){
return drupal_get_form('library_form_alter',$node);
}

В меню указываю путь:

    $items['node/add/library'] = array(
    'title' => '',
    'page callback' => 'library_form',
    'page arguments' => array(&$form, $form_state, 'library_node_form'),
    'access callback' => TRUE,
    'file'=>'library.add.inc',
    'access arguments' => array('add', $node ,$account = NULL),
    'type' => MENU_LOCAL_TASK
    );

Пишет warning: Missing argument 3 for library_form_alter() in . Не "доходит" id формы. Как это id можно посмотреть?

Комментарии

Аватар пользователя lena_elena4 lena_elena4 20 апреля 2009 в 19:24

В списке содержимого - это где? Подскажите, пожалуйста.
Я так понимаю, мне надо взять id стандартной формы добавления ноды. Или это не так?

Аватар пользователя lena_elena4 lena_elena4 21 апреля 2009 в 16:26

Спасибо большое, это получилось.
Теперь не выходит с обработчиком.
Делаю вот так: убиваю кнопку Save, ставлю свою, прикрепляю к ней обрабочик.
unset($form['buttons']['submit']);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
$form['#submit'] = 'library_add_form_submit';

Аватар пользователя penexe penexe 22 апреля 2009 в 8:20

lena_elena4 wrote:
Спасибо большое, это получилось.
Теперь не выходит с обработчиком.
Делаю вот так: убиваю кнопку Save, ставлю свою, прикрепляю к ней обрабочик.
unset($form['buttons']['submit']);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
$form['#submit'] = 'library_add_form_submit';

откуда такие бредовые идеи?
$form['#submit'] = 'library_add_form_submit';
подцепит обработчик сам
то есть будет вызывать функцию
library_add_form_submit
удалять дефолтную кнопку нельзя