drupal form_execute для заселения - PullRequest
0 голосов
/ 23 декабря 2010

Мне нужен рабочий пример того, как заполнить поля формы с помощью drupal_execute ($ form_id, $ form_state).Я могу пополнить, изменив default_values ​​следующим образом:

function sample_myform($form_state){
   $form['field']['name'] = array(
  '#type' => 'textfield',
'#title'=> 'Name: ',
'#maxlength'=> 127,
'#default_value'=> $form_state['values']['name'],
);
$form['field']['button1'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
return $form;
 }

function sample_myform_form_alter(&$form,$form_state,$form_id){
if($form_id=='sample_myform'){
    $id  = db_result(db_query("select max(id) from test2"));
    $name  = db_result(db_query("select name from test2 where id ='$id'"));
    $form['field']['name']['#default_value'] = "$name";
    drupal_set_message(t('Name: '.$name." id: ".$id));
}
  }

Однако я хочу использовать drupal_execute для повторного заполнения.Есть предложения?

1 Ответ

1 голос
/ 25 декабря 2010

drupal_execute вызывает drupal_prepare_form , которая вызывает hook_form_alter , так что у вас все будет хорошо.С другой стороны, вы можете передать свои значения в $form_state['values'] следующим образом:

$form_state['values']['name'] =
  db_result(db_query("select name from test2 where id ='$id'"));
drupal_execute('sample_myform', $form_state);

Однако, если # tree равно true для элемента, первая строка должна читаться

$form_state['values']['field']['name'] =
  db_result(db_query("select name from test2 where id ='$id'"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...