Jak zmienić klasę przycisku wysyłania?


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

Chcę zmienić klasę z „formularz-przesłać” na „formularz-przesłać”.

Jak mogę to zrobić? Skąd pochodzi klasa „form-submission”?

Odpowiedzi:


22

Gdybym był tobą, nie zmieniłbym nazwy klasy, a raczej dodałbym własną klasę do elementu formularza. Możesz to zrobić, implementując hook_form_alter w niestandardowym module lub (w przypadku Drupal 7) w swoim motywie. Kod wyglądałby mniej więcej tak:

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

Nawiasem mówiąc, element przycisku przesyłania niekoniecznie jest konieczny $form['actions']['submit']. Będziesz musiał dowiedzieć się, który element jest przyciskiem przesyłania w konkretnej sytuacji. Możesz to zrobić, wysyłając zmienną $ form; Polecam instalację modułu Devel i dodanie dsm($form);do powyższej funkcji.


skąd wiesz, że może to dać klasę przyciskowi przesyłania. $ form ['akcji'] ['wyślij'] ['# atrybuty'] ['klasa'] []
enjoylife

2
Znajduje się w dokumentacji API Forms, api.drupal.org/api/drupal/… .
marcvangend

interfejs pokazuje jako $ form ['# atrybuty'] = array ('class' => array ('search-form')); dlaczego piszesz w ten sposób. $ form ['akcje'] ['zgłoś'] ['# atrybuty'] ['klasa'] []. i masz []? dziękuję
enjoylife

7
Jeśli tak $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, zastąpisz wszystkie ustawione klasy. Jeśli tak $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, zastąpisz nie tylko istniejące klasy, ale wszystkie atrybuty. (PS Zobacz także mój dodatek do powyższej odpowiedzi).
marcvangend

Działa to również w Drupal 8.
Achraf JEDAY

0

ten kod w zasadzie użytkownik dor dodaje swoją niestandardową klasę w formularzu przycisk Prześlij.

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
to nie jest poprawne, element „class” w tablicy #attributes musi być tablicą:'class' => array("mybtn-class", "mybtn-class2")
DrCord,

Chociaż odpowiedź @devendra działa, zgodnie z sugestią @DrCord, powinna być'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.