J'ai besoin d'ajouter des fichiers CSS et JavaScript externes et locaux à un formulaire, mais je n'arrive pas à trouver la bonne façon de le faire. Dois-je simplement ajouter les chemins et les URL des fichiers JS et CSS?
Je suppose $form['#attached']['css'][]
et $form['#attached']['js'][]
sont les bons endroits pour le faire, donc ils sont rechargés lors des reconstructions de formulaire. Il me semble manquer quelque chose.
Avez-vous regardé la documentation?
Attachez CSS et JS au formulaire
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';
Fichiers externes
http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_process_attached/7
Les fichiers externes "js" et "css" peuvent également être chargés. Par exemple:
$build['#attached']['js']['http://code.jquery.com/jquery-1.4.2.min.js'] = array('type' => 'external');
Voici la méthode pour ajouter CSS en ligne aux formulaires ...
$form['#attached']['css'][] = array(
'data' => '.my-example-element { display: none; }',
'type' => 'inline',
);
Notez que vous devez ajouter au tableau css plutôt que de le remplacer. Ce qui signifie que vous devez utiliser: ['css'][] =
plutôt que ['css'] =
pour éviter d'écraser d'autres ajouts.
Voici une façon de le faire via. appeler une fonction en utilisant #after_build
propriété. Passez simplement votre identifiant de formulaire dans le boîtier du commutateur.
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;
}
Vous pouvez également suivre ce bon tutoriel Ajout de css et js à drupal forms
J'espère que cela t'aides. :)