web-dev-qa-db-fra.com

Comment encapsuler deux éléments d'un tableau de rendu dans une div?

Compte tenu de ce tableau rendable:

$output = array(
    'Twitter-icon' => array(
      '#type' => 'markup',
      '#markup' => '<div class="Twitter-icon"></div>'
    ),
    'Twitter-link' => array(
      '#type' => 'markup',
      '#markup' => l('follow us on Twitter', 'https://Twitter.com/#!/zujava'),
    ), 
  );

Comment encapsuler ces deux éléments dans une seule DIV?

12
Justin

Vous pouvez également utiliser le #container élément de formulaire et code similaire au suivant:

$wrapper = array(
  '#type' => 'container',
  '#attributes' => array(
    'class' => array('class-name'),
  ),
);

$wrapper['Twitter-icon'] => array(
  '#type' => 'markup',
  '#markup' => '<div class="Twitter-icon"></div>'
);

$wrapper['Twitter-link'] => array(
  '#type' => 'markup',
  '#markup' => l(t('follow us on Twitter'), 'https://Twitter.com/#!/zujava'),
); 

L'élément # container enveloppe ses éléments enfants avec un <div> tag, dont la classe CSS est celle passée dans le #attributes propriété.

Vous pouvez même utiliser un conteneur pour l'élément "Twitter-icon", mais cela ne vous donne aucun avantage, sauf dans le cas où vous pourriez éventuellement ajouter un élément à cela, comme avec le code suivant:

$wrapper = array(
  '#type' => 'container',
  '#attributes' => array(
    'class' => array('class-name'),
  ),
);

$wrapper['Twitter-icon'] => array(
  '#type' => 'container',
  '#attributes' => array(
    'class' => array('Twitter-icon'),
  ),
);

if ($condition) {
  $wrapper['Twitter-icon']['Twitter-icon-text'] => array(
    '#type' => 'markup',
    '#markup' => t('Icon text'),
  );
}

$wrapper['Twitter-link'] => array(
  '#type' => 'markup',
  '#markup' => l(t('follow us on Twitter'), 'https://Twitter.com/#!/zujava'),
); 
29
kiamlaluno

C'est ce que tu cherches?

$output = array(
    'Twitter-icon' => array(
      '#type' => 'markup',
      '#markup' => '<div class="Twitter-icon"></div>'
      '#prefix' => '<div class="test">',
    ),
    'Twitter-link' => array(
      '#type' => 'markup',
      '#markup' => l('follow us on Twitter', 'https://Twitter.com/#!/fdgf'),
      '#suffix' => '</div>',
    ), 
);

J'espère que cela pourra aider!

6
ninjascorner

Vous pouvez également créer un thème pour cela.

$form['Twitter']['#theme'] = 'my_Twitter_theme';

$form['Twitter']['icon'] = array(
'Twitter-icon' => array(
  '#type' => 'markup',
  '#markup' => '<div class="Twitter-icon"></div>'
);

$form['Twitter']['link'] = array(
  '#type' => 'markup',
  '#markup' => l('follow us on Twitter', 'https://Twitter.com/#!/zujava'),
);

Et dans votre thème crochet:

function my_hook_theme(){
  return array(
    'my_Twitter_theme' => array('form' => NULL)
  );
} 

Et dans la fonction thème:

function theme_my_Twitter_theme($form){
  $output = "";

  $output .= "<div class=\"Twitter\">";
  $output .= drupal_render($form['icon']);
  $output .= drupal_render($form['link']);
  $output .= "</div>";    

  $output .= drupal_render($form);
  return $output;
}

J'utilise ceci dans Drupal 6, je ne sais pas si cela fonctionne aussi dans D7 mais j'espère que oui

2
Gnuget