送信ボタンクラスを変更するにはどうすればよいですか?


11
 <input type="submit" class="form-submit" value="" name="op" id="edit-submit">

クラスを「form-submit」から「form-submitone」に変更したい。

どうすればできますか?クラス「フォーム送信」はどこから来たのですか?

回答:


21

私があなたなら、クラス名を変更するのではなく、独自のクラスをフォーム要素に追加します。カスタムモジュールまたは(Drupal 7の場合)テーマにhook_form_alterを実装することで、これを行うことができます。コードは次のようになります。

<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id = 'my_form') {
    $form['actions']['submit']['#attributes']['class'][] = 'form-submitone';
  }
}
?>

ちなみに、送信ボタン要素は必ずしも必要ではありません$form['actions']['submit']。特定の状況では、どの要素が送信ボタンであるかを理解する必要があります。$ form変数を出力することでそれを行うことができます。Develモジュールをインストールし、dsm($form);上記の機能に追加することをお勧めします。


$ form ['actions'] ['submit'] ['
#attributes

2
これは、Forms APIリファレンスapi.drupal.org/api/drupal/…にあります。
marcvangend、2011年

APIは次のように表示されます$ form ['#attributes'] = array( 'class' => array( 'search-form')); 。$ form ['actions'] ['submit'] ['#attributes'] ['class'] []と書く理由。[]がありますか?ありがとう
enjoylife

6
実行すると$form['actions']['submit']['#attributes']['class'] = array('form-submitone');、すでに設定されているすべてのクラスが上書きされます。実行すると$form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));、既存のクラスだけでなく、すべての属性が上書きされます。(PS上記の回答への私の追加も参照してください。)
marcvangend '23年

0

このコードは基本的に、ユーザーdorがフォーム送信ボタンにカスタムクラスを追加します。

function subscriber_form(){
    $form['submit'] = array(
    '#type'  => 'submit',
    '#attributes'=>array('class'=> array('mybtn')),
    '#ajax' => array(
      'callback' => 'subscriber_ajax_callback',
    ),
    '#value' =>'Submit', // @FIXME doesn't render quotes properly
  );

}

2
これは不正解です。#attributes配列の「クラス」項目は配列である必要があります:'class' => array("mybtn-class", "mybtn-class2")
DrCord

@DrCord提案次@devendra回答作品、が、それがあるべき'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.