2015-07-21 2 views
0

я пост рядом с моей проблемой hereРендер мульти-массив в веточке

Потому что я не могу вынести мой массив в Twig.

А {{свалка (besoins)}} дать мне что-то вроде

array (size=30) 0 => 
    array (size=3) 
     'stock' => 
     object(TG\ComptaBundle\Entity\Stock)[1097] 
      private 'dimensions' => 
      object(Doctrine\ORM\PersistentCollection)[1131] 
       ... 
      private 'id' => int 1 
      private 'name' => string 'Dilite 2' (length=8) 
      private 'prix' => int 15 
     'dimension' => 
     object(TG\ComptaBundle\Entity\Dimension)[1134] 
      private 'stocks' => 
      object(Doctrine\ORM\PersistentCollection)[1123] 
       ... 
      private 'id' => int 10 
      private 'name' => string '15 x 15' (length=7) 
      private 'longueur' => int 15 
      private 'largeur' => int 15 
     'besoin' => 
     array (size=1) 
      0 => 
      object(TG\ComptaBundle\Entity\Besoin)[1773] 
       ... 

Так что я могу видеть, что у меня есть "Besoin" в моем массиве.

Но с моей веточку кода, мои клетки остаться пустой ... :(

<table class="table table-hover table-bordered"> 
     <thead> 
      <tr> 
       <th>#</th> 
        {% for dimension in dimensionslist %} 
         <th>{{ dimension.name }}</th> 
        {% endfor %} 
      </tr> 
     </thead> 
     <tbody> 
       {% for stock in materiauxlist %} 
        <tr> 
         <td>{{ stock.name }}</td> 
         {% set newArray = [] %} 
         {% for tableau in besoins %} 
          {% if tableau.stock.name == stock.name %} 
           {% set newArray = newArray|merge([tableau]) %} 
          {% endif %} 
         {% endfor %} 
         {% for tableau in newArray %} 
           {% if besoin %} 
            <td>{{ besoin.nombre }}</td> 
           {% endif %} 
         {% endfor %} 
        </tr> 
       {% endfor %} 
    </tbody> 
    </table> 

Вот мой контроллер:

public function commandeAction() 
    { 
     $em = $this->getDoctrine()->getManager(); 
     $materiauxlist = $em->getRepository('TGComptaBundle:Stock')->findAll(); 
     $dimensionslist = $em->getRepository('TGComptaBundle:Dimension')->findAll(); 
     $tab1 = array_merge($materiauxlist, $dimensionslist); 
     $besoins = array(); 

     foreach ($materiauxlist as $stock) { 
       foreach ($dimensionslist as $dimension) { 
        $besoin = $em->getRepository('TGComptaBundle:Besoin')->findBy(array('stock' => $stock, 'dimension' => $dimension), null, 1); 
        $tableau = array('stock' => $stock, 'dimension' => $dimension, 'besoin' => $besoin); 
        $besoins[] = $tableau; 
       } 
     } 

     return $this->render('TGProdBundle:Projet:stocks.html.twig', array(
       'materiauxlist' => $materiauxlist, 
       'dimensionslist' => $dimensionslist, 
       'besoin' => $besoin, 
       'tableau' => $tableau, 
       'besoins' => $besoins)); 
    } 

Пожалуйста, может кто-то помочь мне

+0

Вы уверены, что $ Besoin Оценивается истина в ветке '{%, если Besoin%}'? – KmeCnin

+0

Нет, это не так, его оценили как ложные, я думаю, но я не знаю, почему причина, которую я могу видеть в моем дампе – Nico

+2

Нет, вы сказали, что вы сбросили besoinS, так что это не связано с besoin (без S) – KmeCnin

ответ

0

я думаю? это неверно:

{% for tableau in newArray %} 
    {% if besoin %} 
     <td>{{ besoin.nombre }}</td> 
    {% endif %} 
{% endfor %} 

Edit: он должен выглядеть следующим образом:

{% for values in newArray %} 
    {% for key,value in values %} 
     {% if key == "besoin" %} 
     {% for bison in value %} 
      <td>{{ bison.nombre }}</td> 
     {% endfor %} 
     {% endif %} 
    {% endfor %} 
{% endfor %} 
+0

Thx, но К сожалению, «Key» nombre «для массива с ключами», «размерность, besoin» не существует в TGProdBundle: Projet: stocks.html.twig в строке 31 ». Если я ставлю {{value.besoin}} вместо этого, у меня есть преобразование arraytoString ошибки:/ – Nico

+0

'{% if tableau.besoin | first%}' – KmeCnin

+0

Это потому, что Bisons - это коллекция – Nickolaus