Вставить ввод в друпал форму программно - PullRequest
1 голос
/ 17 декабря 2010

Как я могу заполнить поле ввода программно в форме друпал API? Позвольте мне проиллюстрировать, рассмотрим следующий пример

function form(){
return drupal_get_form('myform');
}
function myform($form_state){
$form['name'] = array(
'#type' => 'textfield',
'$title' => 'Name: ',
 );
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Save',
 );
 return $form;
}
function myform_submit($form,&$form_state){
$form_id = 'myform';
$form_state['values']['name'] = 'Hello World';
drupal_execute($form_id,$form_state);
}

Здесь, когда происходит событие отправки, вместо заполнения значений я получаю белый пустой экран смерти на экране. Что-то не так с моим синтаксисом ??

1 Ответ

0 голосов
/ 17 декабря 2010

Это правильный способ использовать drupal_execute.Однако есть другие проблемы с обработкой этой формы: попробуйте присоединить функцию отправки и проверки к форме.Когда вы сделаете это, вам также нужно будет удалить drupal_execute из функции submit (что может быть причиной проблемы, с которой вы сейчас столкнулись).Если вам нужно сохранить данные, вам нужно использовать слой абстракции БД, drupal_write_record или один из существующих хуков.

$form_state = array(
  'submitted' => true,
  'values' => array(
    'name' => 'Hello World',
    'op' => t('Save'),
    'submit' => t('Save'),
    'form_id' => 'myform',
  ),
);

drupal_execute('myform', $form_state);
...