Menambahkan CSS dan JS ke formulir dengan lampiran


36

Saya perlu menambahkan beberapa file CSS dan JavaScript eksternal dan lokal ke formulir, tetapi sepertinya saya tidak dapat menemukan cara yang tepat untuk melakukan ini. Apakah saya cukup menambahkan jalur dan URL untuk file JS dan CSS?

Saya berasumsi $form['#attached']['css'][]dan $form['#attached']['js'][]merupakan tempat yang tepat untuk melakukan ini, sehingga mereka dimuat kembali pada formulir yang dibangun kembali. Saya sepertinya kehilangan sesuatu.

Jawaban:


71

Sudahkah Anda melihat dokumentasinya?

Lampirkan CSS dan JS ke formulir

http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#attached

$form['#attached']['css'][] = drupal_get_path('module', 'ajax_example') . '/ajax_example.css';

$form['#attached']['js'][] = drupal_get_path('module', 'ajax_example') . '/ajax_example.js';

File eksternal

http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_process_attached/7

File 'js' dan 'css' eksternal juga dapat dimuat. Sebagai contoh:

$build['#attached']['js']['http://code.jquery.com/jquery-1.4.2.min.js'] = array('type' => 'external');

Saya sudah. Bisakah Anda memberi tahu saya di mana referensi tentang cara menangani file CSS eksternal?
vintorg


2
Hanya sebuah catatan - Anda dapat menambahkan JavaScript seperti dijelaskan di atas ke formulir tertentu dengan menambahkan fungsi yang dinamai <module name>_form_<form id>_alterke modul Anda. Formulir id pencarian dijelaskan di sini: drupal.stackexchange.com/questions/5802/…
Nux

1
Contoh ini agak buruk karena Anda menganggap ini akan menjadi lampiran HANYA pada formulir!
doublejosh

6
Komentar oleh doublejosh berarti: biasanya seseorang harus menambahkan ke array daripada menggantinya. Jadi contohnya harus $form['#attached']['css'][] = drupal_get_path('module', 'ajax_example') . '/ajax_example.css';dll.
tanius

11

Berikut metode untuk menambahkan CSS sebaris ke formulir ...

$form['#attached']['css'][] = array(
  'data' => '.my-example-element { display: none; }',
  'type' => 'inline',
);

Perhatikan bahwa Anda harus menambahkan ke array css daripada menggantinya . Berarti Anda harus menggunakan: ['css'][] =daripada ['css'] =menghindari menekan tambahan lainnya.


6

Berikut adalah salah satu cara untuk melakukannya yaitu melalui. memanggil fungsi menggunakan #after_buildproperti. Cukup berikan id formulir Anda dalam sakelar kasus.

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case 'my_form':
      $form['#after_build'][] = 'mymodule_after_build';
      break;
  }
}

function mymodule_after_build($form, &$form_state) {
  $path = drupal_get_path('module', 'mymodule');
  drupal_add_js ("$path/mymodule.js");
  return $form; 
}

Anda juga dapat mengikuti tutorial yang bagus ini. Menambahkan css dan js ke formulir drupal

Semoga ini membantu. :)


Meskipun ini masih berfungsi di Drupal 7, tampaknya ini adalah hack D6 , diperlukan karena #attachedtidak ada di D6 .
tanius

Anda sebaiknya tidak menggunakan drupal_add_jsformulir. Anda akan berakhir dengan masalah status validasi.
doublejosh

1
@doublejosh Ini adalah jawaban tiga tahun :)
Prerit Mohan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.