提交表单时__toString()必须返回一个字符串值

时间:2016-07-27 10:19:36

标签: forms entity symfony tostring

我有一个展示视图,我必须自定义一点,以便我们可以编辑其中的内容。在这些事情中有一个多选,它是一个查询的结果,用于过滤我在控制器内完成的学校,通过渲染方法发送。

在此之前,我使用多对多选择表单来选择数据库中保存的每个学校。现在我想使用它,所以我可以使用已经工作的东西。

由于它是通过渲染而不是表单发送的,因此我设法创建一个HTML表单,以显示它,并在我提交表单时查看已选择的内容,但是我有几个问题:

首先,它想成为一个对象的实例,并且能够保存一个对象而不是一个数组。我设法做到了这一点:

        $object = new Ecole();
        foreach ($ecolesDispo as $key => $value)
        {
            $object->$key = $value;
        }
        $mission->addEcolesDispo($object);

(Ecole适用于学校)

我现在遇到的问题就在它之后,因为现在它希望将它转换为字符串,但是,我无法做到这一点。

以下是我的实体的相关部分的样子。

/**
 * Constructor
 */
public function __construct()
{
    $this->ecolesDispo = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
 * @return string
 */
public function __toString()
{
    return (string) $this->addEcolesDispo($object);
//Not sure about that part though
}

/**
 * Add ecolesDispo
 *
 * @param \EcoleBundle\Entity\Ecole $ecolesDispo
 *
 * @return Mission
 */
public function addEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo)
{
    $this->ecolesDispo[] = $ecolesDispo;

    return $this;
}

/**
 * Remove ecolesDispo
 *
 * @param \EcoleBundle\Entity\Ecole $ecolesDispo
 */
public function removeEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo)
{
    $this->ecolesDispo->removeElement($ecolesDispo);
}

/**
 * Get ecolesDispo
 *
 * @return \Doctrine\Common\Collections\Collection
 */
public function getEcolesDispo()
{
    return $this->ecolesDispo;
}

如何将其转换为字符串?

提前谢谢

2 个答案:

答案 0 :(得分:0)

您的 __ toString 功能应如下所示:

public function __toString()
{
    return $this->id; // Because __toString seems to be called to set your $key variable...
}

- >依赖于字符串属性。

在__toString()函数中,您使用(string)隐含地调用... __toString()$this转换为字符串。这将是一个循环电话。

答案 1 :(得分:0)

如果在您使用__toString的实体中有一个字符串变量 name ,或者使用该实体指定实体本身的任何字符串类型属性,请尝试此操作。

public function __toString()
{
    // Or change the property that you want to show 
    return $this->name; 
}