渲染模板期间抛出异常(“注意:数组到字符串转换”)

时间:2017-10-11 12:02:04

标签: php symfony twig

当我不得不诽谤个人细节我有问题,这是我的枝条

<div class="box-body">
                    <fieldset>
                        <table class="table table-sm table-striped ">
                            {% for famille in familles %}
                                <tr>
                                    <th>- Code</th>
                                    <td class="text-info">{{ famille.enfant }}</td>
                                    <td class="text-info">{{ famille.lien }}</td>


                                </tr>
                            {% endfor %}

                        </table>
                    </fieldset>
                </div>

这是我的personneType

->add('familles', CollectionType::class, array(
                    'label' => 'Familles',
                    'entry_type' => FamilleType::class,
                    'allow_add' => true,
                    'by_reference' => false,
                    'prototype' => true,
                    'allow_delete' => true,




                ))

像这样的人物实体

 /**
     * @ORM\OneToMany(targetEntity="IT\ITBundle\Entity\Famille",cascade={"persist","remove"}, mappedBy="personne")
     * @ORM\JoinColumn(name="enfant_id", referencedColumnName="id")
     */
    private $familles;
 /**
     * Get familles
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getfamilles()
    {
        return $this->familles;
    }

和家庭实体是这样的

<?php

namespace IT\ITBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Famille
 * @ORM\Table(name="famille")
 * @ORM\Entity(repositoryClass="IT\ITBundle\Repository\FamilleRepository")

 */

class Famille
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="lien", type="string", length=255, nullable=true)
     */
    private $lien;

    /**
     * @ORM\ManyToOne(targetEntity="IT\ITBundle\Entity\Personne", inversedBy="familles")
     * @ORM\JoinColumn(name="enfant_id", referencedColumnName="id")

     */

    private $personne;
    /**
     * @ORM\ManyToOne(targetEntity="IT\ITBundle\Entity\Personne", inversedBy="familles")
     * @ORM\JoinColumn(name="personne_id", referencedColumnName="id")

     */
    private $enfant;

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set lien
     *
     * @param string $lien
     * @return Famille
     */
    public function setLien($lien)
    {
        $this->lien = $lien;

        return $this;
    }

    /**
     * Get lien
     *
     * @return string
     */
    public function getLien()
    {
        return $this->lien;
    }

    /**
     * Set personne
     *
     * @param \IT\ITBundle\Entity\Personne $personne
     *
     * @return Personne
     */
    public function setPersonne(\IT\ITBundle\Entity\Personne $personne = null)
    {
        $this->personne = $personne;

        return $this;
    }

    /**
     * Get personne
     *
     * @return \Doctrine\Common\Collections\ArrayCollection
     */
    public function getPersonne()
    {
        return $this->personne;
    }

    /**
     * Set enfant
     *
     * @param \IT\ITBundle\Entity\Famille $enfant
     *
     * @return Personne
     */
    public function setEnfant($enfant)
    {
        $this->enfant = $enfant;

        return $this;
    }

    /**
     * Get enfant
     *
     * @return Personne
     */
    public function getEnfant()
    {
        return $this->enfant;
    }
}

所以我想在细节中展示'lien'和'personne',但它给了我这个错误

在渲染模板期间抛出了异常(“注意:数组到字符串转换”)。 认为

1 个答案:

答案 0 :(得分:3)

您有多个错误:

  1. {{ famille.enfant }}不是字符串,因此肯定会出现错误
  2. 根据你的学说关系,一个人可以只有一个家庭但是一个家庭可以有多个孩子,所以你必须改变你的名字
  3. 在家庭实体$personneenfant中,不仅仅是实体的教义集合,因此您应该更改所有的getter / setter并初始化阵列集合
  4. 你必须清理你的代码!