Code ne fonctionnant pas avec un élément de tablau

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Dans le code de la fonction suivante, il se produit quelque chose qui me laisse complètement perplexe!

function modiffiltresexposes_form_alter(&$form, &$form_state, $form_id)
{
  ...

  case 'comment-form':
     $tabPhotos = array('field_photo_accroche', 'field_photos_facade', 'field_photos_hall', 'field_photos_chambres', 'field_photos_piscine', 'field_photos_restaurant', 'field_photos_bar', 'field_photos_bien_etre', 'field_photos_diverses');

  var_dump($form['#node']->field_photo_accroche);

  ...    

Dans ce cas, ça m'affiche bien les informations attendues :

"array(1) { ["und"]=> array(1) { [0]=> array(12) { ["fid"]=> string(2) "11" ["alt"]=> string(0) "" ["title"]=> string(0) "" ["uid"]=> string(1) "1" ["filename"]=> string(34) "salon-jardin-discount-avf2g2-z.jpg" ["uri"]=> string(43) "public://salon-jardin-discount-avf2g2-z.jpg" ["filemime"]=> string(10) "image/jpeg" ["filesize"]=> string(6) "160966" ["status"]=> string(1) "1" ["timestamp"]=> string(10) "1315298540" ["type"]=> string(5) "image" ["rdf_mapping"]=> array(0) { } } } }"

Lorsque je fais var_dump($form['#node']->$tabPhotos[0]);, j'obtiens bien le même résultat.

Lorsque je fais var_dump($form['#node']->field_photo_accroche['und']);, ça m'affiche bien :

"array(1) { [0]=> array(12) { ["fid"]=> string(2) "11" ["alt"]=> string(0) "" ["title"]=> string(0) "" ["uid"]=> string(1) "1" ["filename"]=> string(34) "salon-jardin-discount-avf2g2-z.jpg" ["uri"]=> string(43) "public://salon-jardin-discount-avf2g2-z.jpg" ["filemime"]=> string(10) "image/jpeg" ["filesize"]=> string(6) "160966" ["status"]=> string(1) "1" ["timestamp"]=> string(10) "1315298540" ["type"]=> string(5) "image" ["rdf_mapping"]=> array(0) { } } }"

Par contre, lorsque je fais var_dump($form['#node']->$tabPhotos[0]['und']);, ça m'affiche : "NULL"

Là, je suis complètement perplexe. Quequ'un aurait une dée?

Merci d'avance pour votre aide.

Forum : 
Version de Drupal : 

Bon, j'ai résolu mon problème en créant un tableau non pas de strings, mais d'objets. Attention, un probème auquel j'ai été confronté a été que malgré que tout le code fonctionnait correctement, les modifications n'apparaissaient pas dans la page finale. Il a fallu que j'indique explicitement que c'était un tableau d'objets référencés (&).

Pour ceux que ça intéresse ou peu aider, voici mon code :

case 'comment-form':
     $tabPhotos = array(array(&$form['#node']->field_photo_accroche, "d'accroche "), array(&$form['#node']->field_photos_facade, "de la façade "), array(&$form['#node']->field_photos_hall, "du hall "), array(&$form['#node']->field_photos_chambres, "des chambres "), array(&$form['#node']->field_photos_piscine, "de la piscine "), array(&$form['#node']->field_photos_restaurant, "du restaurant "), array(&$form['#node']->field_photos_bar, "du bar "), array(&$form['#node']->field_photos_bien_etre, "des activités de bien être "), array(&$form['#node']->field_photos_diverses, "diverses "));
    
     for($i = 0; $i < count($tabPhotos); $i++)
      {
       if(!empty($tabPhotos[$i][0]['und'][0]));
        {
         for($cpt = 0; $cpt < count($tabPhotos[$i][0]['und']); $cpt++)
          {
           $texte = "Photo ";
       
           if(count($tabPhotos[$i][0]['und']) > 1)
            $texte .= $i - 1 . " ";
        
           $texte .= $tabPhotos[$i][1] . " ";
        
           $texte .= "de l'hôtel " . $form['#node']->field_nom_hotel['und'][0]['value'];       
       
           $tabPhotos[$i][0]['und'][$cpt]['title'] = $texte;
           $tabPhotos[$i][0]['und'][$cpt]['alt'] = $texte;
          }
        }
      }
     
    break;