durpal 検索フォームの hook_form_alter を実装し、そこにいくつかの新しい要素を追加するこのコードがあります。上記のフォームの template.php にテーマの上書きコードも追加しました。これに加えて、フォーム要素もそこに渡します。すべてが正常に動作します - 新しい要素を追加し、テーマが使用されますが、ここに問題があります。フォームの各要素を drupal_render でレンダリングしようとすると、何も表示されません。$form 配列の内容を確認したところ、必要なすべてのフォーム データが含まれています。これは私のコードの例外です -
mymod.module
function mymod_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'search_theme_form':
$form['prop_type'] = array(
'#type' => 'select',
'#default_value' => 'Selection A',
'#options' => array("Selection A","Selection B"),
'#attributes' => array('class'=>'Bold'),
);
break;
}
}
template.php -
function mytheme_theme() {
return array(
'search_theme_form' => array(
'arguments' => array('form' => NULL),
'template' => 'search_myblock_form',
),
);
}
また、奇妙な問題が 1 つあります。devel の dsm は、$form の内容を表示することさえできませんでした。print_r を使用して最初に文字列値を取得し、それを dsm に渡して表示する必要がありました。価値があるのは、もう 1 つのことです。テーマ テンプレート内に、すべてのフォーム要素がレンダリングされたこの変数 ($search_form) があります。個々の要素を別の方法でテーマにしたいので、使用できません。個々の要素を自分でレンダリングするのが好きです。