私のサイトでは、カスタムテンプレートでカスタムフォームを作成する必要があります。カスタムブロックではなく、カスタムtplファイルにあります。インターネットで解決策を検索しましたが、フォームが表示されないか、フィールドが表示されていますが、<form>タグ内にありません。この方法では、送信ボタンは機能しません。自己記述型フォームタグでフィールドをレンダリングすると、検証関数と送信関数が機能しません。
誰かが私を助けてくれますか?
TPL-ファイル
$form = _odisee_forms($form, $dag, $datum, $uur, $campussen);
$form['infodag'] = form_process_checkboxes($form['infodag']);
$formulier = drupal_get_form('infodagen-block-form');
print '<form id="'.$formulier['#id'].'" accept-charset="UTF-8" method="'.$formulier['#method'].'" action="'.$formulier['#action'].'">';
print drupal_render_children($form);
//print render($form);
print render($formulier['form_id']);
print render($formulier['form_build_id']);
print render($formulier['form_token']);
print '</form>';
forms.inc
function _odisee_forms($type, $dag, $datum, $uur, $campussen) {
$form = array();
foreach ($campussen as $key => $campus) {
$infomoment[] = t($dag[$key])." ".$datum[$key]. " @ " .$campus. " om ".$uur[$key];
}
$form['#id'] = 'infodagen-block-form';
$form['infodag'] = array(
'#type' => 'checkboxes',
'#options' => $infomoment,
'#required' => TRUE,
);
$form['voornaam'] = array(
'#type' => 'textfield',
'#title' => t('<img src="/sites/all/modules/custom/odisee_forms/images/icon.png" class="icon">'),
'#size' => 15,
'#attributes' => array(
'placeholder' => array('Voornaam'),
'class' => array('breed')
),
'#required' => TRUE,
);
$form['naam'] = array(
'#type' => 'textfield',
'#title' => t('<img src="/sites/all/modules/custom/odisee_forms/images/icon.png" class="icon">'),
'#size' => 15,
'#attributes' => array(
'placeholder' => array('Naam'),
'class' => array('breed')
),
'#required' => TRUE,
);
$form['emailadres'] = array(
'#type' => 'textfield',
'#title' => t('<img src="/sites/all/modules/custom/odisee_forms/images/arroba-symbol.png" class="icon">'),
'#size' => 20,
'#maxlength' => 128,
'#required' => TRUE,
'#attributes' => array(
'placeholder' => array('E-mailadres'),
'class' => array('breed')
),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Schrijf in!'),
'#attributes' => array('class' => array('button')),
'#submit' => array('_odisee_form_submit'),
'#validate' => array('_odisee_form_validate'),
);
return $form;
}
function _odisee_forms_validate($form_id, &$form, &$form_state) {
dpm($form_state, "state");
dpm($form);
}
function _odisee_forms_submit($form, &$form_state) {
}
テンプレートでフォームをレンダリングする必要があります。 drupal_get_formを呼び出すだけでは不十分です。フォームをレンダリングするには、以下を使用します。
drupal_render(drupal_get_form( 'form_nam'))
次のことも確認する必要があります。
このリンクを参照してください 例