Как заполнить поля в API формы Drupal - PullRequest
0 голосов
/ 16 декабря 2010

У меня есть друпал API вида

  function contactus(){
    return drupal_get_form('myform_contact');
  }

function myform_contact($form_state){
    $form['field'] = array(
    '#type' => 'fieldset',
    '#title' => 'Contact Us Form',
    '#collapsible' => true,
    '#collapsed'=> false,
    '#description' => t('Enter your feedback'),
    );

    $form['field']['email']  = array(
    '#type'=>'textfield',
    '#title'=> 'E-mail Address',
    '#required' => '0',
    '#maxlength' => 127,
    '#required' => 0,
    );

    $form['field']['comment'] = array(
    '#type'=> 'textarea',
    '#rows'=> 5,
    '#title' => 'Comment / Question? ',
    '#required' =>1,     
    );

    $form['field']['captcha'] = array(
    '#type' => 'captcha',
    '#captcha_type' => 'image_captcha/Image',

    );

    $form['field']['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit',
    '#validate' => array('form_validate'),
    '#weight' => 1
    );
    $form['field']['edit'] = array(
    '#type'=> 'button',
    '#value' => 'Edit',
    '#validate'=> array('form_edit'),
    '#weight' => 10,
    );

    return $form;
}

function myform_contact_submit($form, &$form_state){

    $txt = $form_state['values']['comment'];
    $email = $form_state['values']['email'];
    $txt = wordwrap($txt,70);
    mail("$email", "Comment / Questions ?", $txt);
    $result = db_query("insert into contactus values('$email','$txt')");
    $node = new stdClass();
    $node-> title = $form_state['values']['email'];
    $node-> body = $form_state['values']['comment'];
    $node->type = 'contactus';
    node_save($node);
    drupal_set_message(t('Form Successfully submitted with nid of '. $node->nid));
    drupal_set_message(t('Values inserted into Database'));
}

function form_edit($form,&$form_state){
   $nid = $form_state['values']['nid'];
   $node = node_load(49);
   drupal_set_message('edit mode with title '. $node->title. ' and comment as '. $node->body);
   $form_state['values']['email'] =  $node->title;
   $form_state['values']['comment'] = $node->body;     
}

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

1 Ответ

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

Насколько я знаю, для FAPI нет типа ловушки form_edit. Как правило, есть функция определения формы, функции проверки и отправки. Проверьте документацию здесь , если вы еще этого не сделали.

Мне кажется, вам нужно добавить атрибут '#default_value' к элементам формы, которые вы хотите заполнить. Вам также необходимо переместить любой код, загружающий узел, в вашу функцию myform_contact.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...