Symfony 3类的对象无法转换为字符串

时间:2017-11-24 19:49:20

标签: php symfony entity

我有这个地址表。一切都按预期工作,直到我为城市添加了一个下拉选择字段。我在尝试保存表单时收到此错误:

  

捕获致命错误:类AppBundle \ Entity \ Address的对象无法转换为字符串

文档说EntityType字段用于从Doctrine实体加载选项。

这是表格:

 $builder
             ->add('cities', EntityType::class, array(
                'class' => \AppBundle\Entity\Cities::class,
                'choice_label' => 'cityname',
                'choice_value' => 'cityid')
            )

这是我的实体

 /**
 * @var string
 * 
 * @ORM\Column(name="cities", type="string", length=55, nullable=false)
 */
private $cities;   

and setters / getters:

 /**
 * Set cities
 *
 * @param string $cities
 *
 * @return Address
 */
public function setCities($cities)
{
    $this->cities = $cities;

    return $this;
}

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

我还补充说:

public function __toString() {
  return $this->getCities();
}

得到了这个结果:

  

捕获致命错误:方法AppBundle \ Entity \ Address :: __ toString()   必须返回一个字符串值

1 个答案:

答案 0 :(得分:4)

您应该为您实施__toString()方法实体:

  

__ toString()允许类决定当它被视为字符串时它将如何反应。例如,echo $ obj;将打印。此方法必须返回一个字符串,否则会发出致命的E_RECOVERABLE_ERROR级错误。

例如,您可以编写类似这样的内容来将您的类表示为字符串:

public function __toString() {
  return $this->getCities();
}

有关此魔术方法 here的更多信息。