2012-01-06 3 views
2

J'ai une question CodeIgniter. Comment puis-je passer un tableau du contrôleur à afficher? Voici mon code qui ne fonctionne pas:codeigniter: passe tableau du contrôleur à afficher

contrôleur:

$data_part13['header3_item'][] = array('title' => 'first image 1' , 'img' => 'https://encrypted-tbn0.google.com/images?q=tbn:ANd9GcQoshslL3aMNzG50708domqPSA4ouPjk_wA7jCpVRUH3k8zVdn9'); 

$this->load->view('part_1_3', $data_part13); 

et vue:

<div id="header3"> 
    <div id="header3-inner"> 
     <?php 
     if (isset($header3_item)){ 
      foreach ($header3_item as $key) { 
     ?> 
       <div class="header3-item"> 
        <img alt="<?php echo($key->title); ?>" src="<?php echo($key->img); ?>"/> 
       </div> 
     <?php 
      } 
     } 
     ?> 
    </div> 
</div> 

Répondre

6

Vous l'avez fait correctement (un peu). Vous avez passé un tableau à la vue, mais votre problème était que vous utilisiez un objet dans la vue. Tu aurais dû faire à la place quelque chose comme ceci:

$data_part13['header3_item'][] = (object) array('title' => 'first image 1' , 'img' => 'https://encrypted-tbn0.google.com/images?q=tbn:ANd9GcQoshslL3aMNzG50708domqPSA4ouPjk_wA7jCpVRUH3k8zVdn9'); 

$this->load->view('part_1_3', $data_part13); 

La partie de vue peut rester le même.

+0

Merci de votre réponse, cela a fonctionné pour moi. Mais je n'arrive toujours pas à comprendre pourquoi j'ai besoin de "(objet)"? est-ce la norme PHP ou la méthode Codeigniter? – Irakli

+4

Eh bien, pensez aux objets comme une flèche et les tableaux comme une brique. Ils sont tous deux faits d'atomes, mais ils ont l'air différents. Vous pouvez accéder à un objet avec le '->' (flèche) et un tableau avec le [['..'] '' (brique) mais vous ** ne pouvez pas ** accéder aux données des objets avec un appel de tableau. – MJA

2

Vous le transmettez correctement, mais vous n'y accédez pas correctement depuis la vue. Au lieu de $key->title, vous devez utiliser $key['title'];

Questions connexes