Форма без тега


У меня есть форма модерации в разделе администратора, где модератор может редактировать текст, написанный пользователем.

Вот моя форма:

function phase2_moderation_form($admin, $moderation, $phase2, $edit, $sdid) {

    $sql = 'SELECT * FROM {phase2_submitted_data} WHERE sdid = :sdid';
    $results = db_query($sql, array(':sdid' => $sdid));
    foreach ($results as $result) {
        $submission[] = $result;
    }

    $form = array(); 

    $form['status'] = array(
    '#type' => 'select',
    '#title' => t('Status'),
    '#options' => array(
            '0' => t('not enabled'),
            '1' => t('enabled')
            ),
    '#required' => TRUE,
    '#value' => $submission[0]->status,
    );

    $form['question'] = array(
            '#type' => 'textarea',
            '#title' => t('question'),
            '#required' => TRUE,
            '#value' => $submission[0]->question,
    );

    $form['topic'] = array(
            '#type' => 'select',
            '#title' => t('topic'),
            '#options' => array(
                    'social' => t('Social'),
                    'culture' => t('Culture'),
                    'government' => t('Government'),
                    'environment' => t('Environment'),
                    'traffic' => t('Traffic'),
                    'other' => t('Other')
                    ),
            '#default_value' => 'other',
            '#required' => TRUE,
            '#attributes' => array('id' => array('topic'), 'name' => array('topic')),
            '#title_display' => 'before',
            '#value' => $submission[0]->topic,
            );
    $form['answer'] = array(
            '#type' => 'textarea',
            '#title' => t('Our Answer'),
            '#required' => FALSE,
            '#value' => $submission[0]->answer,
            '#title_display' => 'before',
            );
    $form['submit'] = array(
            '#type' => 'submit',
            '#value' => t('Submit'),
            );
    $form['#submit'][0] = 'phase2_moderation_edit_form_submit';
    $form['cancel'] = array(
            '#type' => 'button',
            '#value' => t('Cancel'),
    );
    return $form;
}

На самом деле ничего особенного, но тег формы не отображается.

В Firebug я вижу, что есть элементы формы-элементы-дивы, но вокруг этих дивов нет. Я уже пытался прокомментировать кнопку отмены, но это не помогает.

Не могли бы вы, пожалуйста, помочь мне?

Вот меню крюка:

function phase2_menu() {
    $items = array();
    $items['admin/moderation/phase2/edit/%'] = array(
        'title' => t('Moderation Phase 2'),
        'page callback' => 'phase2_moderation_form',
        'page arguments' => array(0,1,2,3,4),
        'access arguments' => array('moderation phase 2'),
        'file' => 'phase2.moderation.form.inc',
    );
 return $items;
}

Я не вызываю ничего лишнего (никакой функции предварительной обработки или tpl.php) или что-нибудь еще. Я думал, что Drupal визуализирует его сам с помощью функции глубоко внутри.

Пока, Том

Author: Tom, 2013-07-25

1 answers

Я думаю, вам нужно использовать 'drupal_get_form' как page callback и использовать array('phase2_moderation_form', 0, 1, 2, 3, 4) как page arguments

Или вы можете изменить page callback на другую функцию, например 'phase2_get_my_form', и в этой функции вызвать return drupal_get_form('phase2_moderation_form', $arg0, $arg1, $arg2, $arg3, $arg4); (очевидно, измените $argX на ваши собственные имена аргументов.)

 4
Author: Beebee, 2013-07-25 13:18:06