Wie ändere ich die Klasse der Übermittlungsschaltflächen?


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

Ich möchte die Klasse von "form-submit" in "form-submitone" ändern.

Wie kann ich das machen? Woher kommt die Klasse "form-submit"?

Antworten:


21

Wenn ich Sie wäre, würde ich den Klassennamen nicht ändern, sondern dem Formularelement eine eigene Klasse hinzufügen. Sie können dies tun, indem Sie hook_form_alter in einem benutzerdefinierten Modul oder (im Fall von Drupal 7) in Ihrem Thema implementieren . Der Code würde ungefähr so ​​aussehen:

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

Das Submit-Button-Element ist übrigens nicht unbedingt $form['actions']['submit']. Sie müssen herausfinden, welches Element in Ihrer spezifischen Situation die Schaltfläche zum Senden ist. Sie können dies tun, indem Sie die Variable $ form ausgeben. Ich empfehle, das Devel- Modul zu installieren und die obigedsm($form); Funktion zu erweitern.


Woher wissen Sie, dass dies der Schaltfläche "
Senden

2
Es befindet sich in der Forms-API-Referenz api.drupal.org/api/drupal/… .
Marcvangend

Die API zeigt Folgendes: $ form ['# Attribute'] = Array ('Klasse' => Array ('Suchformular')); warum Sie so schreiben. $ form ['Aktionen'] ['Senden'] ['# Attribute'] ['Klasse'] []. und ein [] haben? danke
genießen

6
Wenn Sie dies tun würden $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, würden Sie alle bereits festgelegten Klassen überschreiben. Wenn Sie dies tun würden $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, würden Sie nicht nur die vorhandenen Klassen, sondern alle Attribute überschreiben. (PS Siehe auch meinen Zusatz zur obigen Antwort.)
Marcvangend

0

Mit diesem Code kann der Benutzer Ihre benutzerdefinierte Klasse auf der Schaltfläche zum Senden von Formularen hinzufügen.

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
Dies ist nicht korrekt. Das Element "class" im Array #attributes muss ein Array sein:'class' => array("mybtn-class", "mybtn-class2")
DrCord

Obwohl @devendra Antwort funktioniert, sollte es nach dem Vorschlag von @DrCord sein'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.