it-swarm.com.de

Hinzufügen von CSS und JS zum Formular mit Anhängen

Ich muss einem Formular einige externe und lokale CSS- und JavaScript-Dateien hinzufügen, aber ich kann anscheinend nicht den richtigen Weg finden, dies zu tun. Füge ich einfach die Pfade und URLs für die JS- und CSS-Dateien hinzu?

Ich nehme an $form['#attached']['css'][] und $form['#attached']['js'][] sind die richtigen Stellen, um dies zu tun, sodass sie bei Formularwiederherstellungen neu geladen werden. Mir scheint etwas zu fehlen.

37
vintorg

Haben Sie sich die Dokumentation angesehen?

Fügen Sie CSS und JS zum Formular hinzu

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';

Externe Dateien

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

Es können auch externe 'js' und 'css' Dateien geladen werden. Zum Beispiel:

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

Hier ist die Methode zum Hinzufügen von Inline-CSS zu Formularen ...

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

Beachten Sie, dass Sie hinzufügen zum CSS-Array anstatt es zu ersetzen. Das heißt, Sie sollten verwenden: ['css'][] = eher, als ['css'] = um zu vermeiden, dass andere Zusätze gequetscht werden.

11
doublejosh

Hier ist eine Möglichkeit, dies zu tun, die über erfolgt. Aufrufen einer Funktion mit #after_build Eigentum. Geben Sie einfach Ihre Formular-ID im Switch-Fall ein.

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; 
}

Sie können auch diesem guten Tutorial folgen Hinzufügen von CSS und Js zu drupal Formulare

Hoffe das hilft. :) :)

6
Prerit Mohan