首页 > 解决方案 > 键为“0, 1”的数组的键“”不存在

问题描述

我有这个简单的问题,但由于我是初学者,我需要帮助,所以提前谢谢你

我有一个类campagne和一个类groupe,两者之间有ManytoMany关系,它自动添加了一个包含它们的ID的campagne-groupe表

现在我试图在表格中显示每个创建的“campagne”的名称以及与之关联的“groupe”,但我收到了这个错误:

键为“0, 1”的数组的键“”不存在。

运动控制器:

  public function index()
{
    $campagne= $this->getDoctrine()->getRepository(Campagne::class)->findAll();
 //   return $this->render('campagne/index.html.twig',['campagne'=> $campagne]);

    return $this->render(
        'campagne/index.html.twig',
        array('campagne'=> $campagne )
   );
          }
 

广告类型:

 public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('Nom')
       
        ->add('EmailExpediteur')
        ->add('NomExpediteur')
        ->add('Message',TextareaType::class)
         ->add('campagnes')
         ->add('envoyer', SubmitType::class)

树枝:

                                {% for camp in campagne %}

                                    <tr>
                                        <td>
                                            {{ camp.Nom }}
                                        </td>
                                    
                                        <td>

                                            {% for camp in campagne.campagnes %}
                                                {{ campagne.campagnes }}
                                            {% endfor %}
                                            
                                        </td>
                                        

我试过 {{ dump(campagne) }} 我得到了这个:

 array:2 [▼
  0 => App\Entity\Campagne {#620 ▼
    -id: 33
    -Nom: "camp1"
    -EmailExpediteur: "expmail@gmail.com"
    -NomExpediteur: "amani"
    -Message: "bla"
    -campagnes: Doctrine\ORM\PersistentCollection {#683 ▼
      -snapshot: []
      -owner: App\Entity\Campagne {#620}
      -association: array:20 [ …20]
      -em: Doctrine\ORM\EntityManager {#431 …11}
      -backRefFieldName: "relation1"
      -typeClass: Doctrine\ORM\Mapping\ClassMetadata {#623 …}
      -isDirty: false
      #collection: Doctrine\Common\Collections\ArrayCollection {#617 ▼
        -elements: []
      }
      #initialized: false
    }
  

标签: phpmysqlformssymfonymany-to-many

解决方案


你给了我们 3 块代码。第一个,来自您的控制器是正确的。第二个是表单类型,但我在这里看不到它的任何用途。为什么要与我们分享?它在您的模板中使用吗?第三个是你的模板,我猜它会抛出异常。它不完整,但我至少可以看出一件事是错误的:

{% for camp in campagne %}
    <tr>
        <td>
            {{ camp.Nom }}
        </td>
        <td>
            // Big warnings here
            {% for camp in campagne.campagnes %}
                {{ campagne.campagnes }}
            {% endfor %}
        </td>
    // I guess the end is something like this:
        <td>
            ...
        </td>
    </tr>
{% endfor %}

最大的警告是:

  • 您正在覆盖camp第一个循环中定义的内容
  • 您在第二个循环中没有使用camp,而是使用campagne

所以我猜你的警告来自这一行:{% for camp in campagne.campagnes %}应该替换为:

{% for camp in campagne %}
    <tr>
        <td>
            {{ camp.Nom }}
        </td>
        <td>
            // Big warnings here
            {% for insidersCampage in camp.campagnes %}
                {{ insidersCampage.Nom}}
            {% endfor %}
        </td>
        <td>
            ...
        </td>
    </tr>
{% endfor %}

推荐阅读