web-dev-qa-db-fra.com

ajouter une classe à l'élément de formulaire

function ajax_register_form_user_login_alter(&$form, &$form_state, $form_id) {
   $form['fbuser'] = array(
      '#type' => 'item',
      '#markup' => 'You have a facebook account?',
      '#weight' => -10,
    );
   $form['login_link'] = array(
      '#type' => 'item',
      '#markup' => '<a class="facebook-action-connect" rel="nofollow" href="foo"><img src="foo" alt=""></a></div>',
      '#weight' => -6,      
    );
   }

Comment puis-je ajouter une classe à cette div?

6
AlexEfremo

Vous cherchez peut-être le #attributes propriété que vous pouvez ajouter aux formulaires et aux éléments de formulaire. Voir l'exemple ci-dessous

function ajax_register_form_user_login_alter(&$form, &$form_state, $form_id) {
   $form['fbuser'] = array(
      '#type' => 'item',
      '#markup' => 'You have a facebook account?',
      '#weight' => -10,
      '#attributes' => array('class' => array('my-class-1')),
    );
   $form['login_link'] = array(
      '#type' => 'item',
      '#markup' => '<a class="facebook-action-connect" rel="nofollow" href="foo"><img src="foo" alt=""></a></div>',
      '#weight' => -6,
      '#attributes' => array('class' => array('my-class-2')),
    );
   }
11
Pontus Nilsson

Selon le drupal guide officiel de l'API du formulaire, le type d'élément ne peut pas utiliser le #attributes propriété:

https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#item

Une solution de contournement pourrait être d'utiliser le #prefix et #suffix Propriétés:

$form['fbuser'] = array(
  '#type' => 'item',
  '#markup' => 'You have a facebook account?',
  '#weight' => -10,
  '#prefix' => '<span class="my_class">',
  '#suffix' => '</span>', // close the span openend by the #prefix property
);

L'inconvénient est que la classe css sera ajoutée à un parent de l'élément item, pas à l'élément lui-même.

6
lastYorsh

Utilisez '#attributes' => array('class' => array('my-class')) ou bien vous pouvez le faire:

$form['html_markup_address'] = array(
  '#markup' => l(t('Add New Address'), 'mymodule/nojs',
   array('attributes' => array('class' => array('ctools-use-modal'))))
);
1

Vous pouvez utiliser _form_set_class()

Documents: https://api.drupal.org/api/function/_form_set_class/7.x

Exemple:

_form_set_class($element, array('my-class'));
0
Rafal Enden