Форма без тега
У меня есть форма модерации в разделе администратора, где модератор может редактировать текст, написанный пользователем.
Вот моя форма:
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 визуализирует его сам с помощью функции глубоко внутри.
Пока, Том
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
на ваши собственные имена аргументов.)