Drupal フォーム API を理解するのに本当に苦労しています...実際には Drupal 全体です。
これが私の問題です。レンダリングがうまくいくフォームを作成しましたが、今やりたいのは特定のフォーム要素のラッパー div です。ボックス標準のがらくた。
誰かが助けてくれますか、少なくとも「良い」チュートリアルの正しい方向を示してくれますか?
ありがとう。
hook_form_alter はあなたの友達です。
テーマの template.php ファイルで、フォームやフォーム要素などに接頭辞と接尾辞を追加できます。
以下は、私が最近行ったサイトの例です。
function bhha_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_login') {
$form['#prefix'] = '<div class="loginForm">';
$form['#suffix'] = '</div>';
$form['name']['#title'] = Null; // Change text on form
$form['name']['#description'] = Null; // Change text on form
$form['name']['#attributes'] = array('placeholder' => t('username'));
$form['name']['#size'] = '30';
$form['pass']['#title'] = Null;
$form['pass']['#description'] = Null; // Change text on form
$form['pass']['#attributes'] = array('placeholder' => t('password'));
$form['pass']['#size'] = '30';
//$form['actions']['submit']['#value'] = t('password');
$form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/Login.png');
$form['links']['#markup'] = '<a class="user-password" href="'.url('user/password').'">' . t('Forgot your password?') . '</a>'; // Remove Request New Password from Block form
$form['links']['#weight'] = 540;
}
}
コードを調べて、テーマの ID にしたいフォームを取得します。アンダースコアをハイフンに置き換えると、上記の例を使用して必要なことを実行できるはずです。
最も基本的な例は次のようになります。
function THEME_NAME_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'FORM_ID') {
// Adds a wrapper div to the whole form
$form['#prefix'] = '<div class="loginForm">';
$form['#suffix'] = '</div>';
// Adds a wrapper div to the element NAME
$form['name']['#prefix'] = '<div class="formRow">';
$form['name']['#suffix'] = '</div>';
}
}
これを行うにはいくつかの方法があります。例えば
field.tpl.php
またはを使用できますtemplate_preprocess_field()
。