Saya memiliki bentuk yang sangat bertema untuk diintegrasikan, yang strukturnya ditunjukkan di bawah ini. Saya hanya tentang sebagian besar kecuali untuk mengirimkan.
<form action="#">
<fieldset>
<legend>Authentification</legend>
<label for="email">Courriel*</label>
<input type="text" name="email" id="email">
<label for="password">Mot de passe*</label>
<input type="password" name="password" id="password" class="last">
<a href="#" title="Mot de passe oublié?" class="clearfix">Forgot password?</a>
<button type="submit" class="clearfix"><span>Login</span></button>
</fieldset>
</form>
Saya sudah mencoba banyak kombinasi berbeda, ternyata button_type tidak berpengaruh pada core. Jadi saya menggunakan hack ini , berharap ini akan memperbaiki masalah saya. Sayangnya, itu hanya mengubah atribut 'type' (jelas), dan bukan elemen itu sendiri. Jenis tombol dapat menahan elemen lain, dalam hal ini rentang diperlukan untuk menahan gambar latar belakang, perlu dalam rentang untuk merentangkan karena teks pada tombol dinamis.
Adakah yang tahu bagaimana saya bisa menghasilkan garis markup berikut menggunakan form API?
<button type="submit" class="clearfix"><span>Login</span></button>
<botton type="submit">
, lihat drupal.org/node/1671190Jawaban:
Di D7 akan merekomendasikan:
Dengan begitu Anda dapat mengganti #markup di fungsi ubah nanti jika perlu, tanpa harus membangun kembali tombol HTML.
sumber
Sebagai tambahan, untuk berjaga-jaga seandainya seseorang mengalami masalah yang sama seperti saya - ketika menggunakan
#markup
atau#prefix
/#suffix
trik pada grup formuliractions
, fungsi kirim panggil balik tidak akan dipanggil sama sekali , kecualisubmit
elemen tipe hadir. Solusi saya adalah seperti ini:Dengan begitu Anda dapat menggunakan HTML khusus untuk mengirimkan grup tindakan.
sumber
Untuk menambahkan beberapa tag khusus, Anda dapat menggunakan potongan berikut:
sumber
Hanya untuk kelengkapan, saya akan memposting solusi alternatif yang melibatkan penggantian
theme_button
(diambil dari posting blog ini )Pertama tambahkan
buttontype
atribut ke elemen form:Dan kemudian menimpa tombol tema:
Namun hal ini menimbulkan masalah jika ada lebih dari satu tombol dalam formulir karena Drupal tidak dapat mendeteksi tombol mana yang telah diklik.
Ini dapat diatasi dengan menambahkan
#after_build
callback ke formulir:Dan kemudian di fungsi build setelah:
sumber
Saya mencoba jawaban Óscar Gómez Alcañiz tetapi formulir saya masih belum terkirim. Sebagai solusi, saya mengubah solusinya sehingga input berada di atas tombol tetapi transparan:
Dengan cara ini, yang sebenarnya
input[type="submit]
diklik dan memicu tindakan tetapi tombolMungkin ide yang bagus untuk meletakkan semua CSS itu dalam stylesheet dalam kehidupan nyata tetapi cukup masukkan tag gaya inline di sini sebagai contoh.
sumber
Inilah cara saya mencapai ini di Drupal 8. Pada dasarnya saya membuat saran tema baru sehingga saya dapat mengganti tombol dengan file ranting kustom.
Tambahkan kode ini di dalam file mythemename.theme Anda:
Dalam kode Anda di mana pun Anda membuat formulir, tambahkan atribut 'data-ranting-saran' ke tombol kirim Anda:
Sekarang jika Anda telah mengaktifkan ranting debug dan Anda memeriksa sumber html tombol Anda di situs, Anda akan melihat saran ranting baru:
Sekarang Anda dapat membuat input - kirim - button.html.twig file (saya letakkan ini di mythemename / templates / form_elements tetapi Anda dapat menempatkannya di tempat lain jika Anda mau):
sumber
Cara yang lebih benar adalah:
Ini menghasilkan HTML yang valid seperti ini:
... dan metode ini tidak mengerem fitur lengkap otomatis dan lainnya.
sumber
<button>
tag, setidaknya di D7. Baris terakhirtheme_button()
di include / form.inc adalahreturn '<input' . drupal_attributes($element['#attributes']) . ' />';