Dan*_*nia 1 php entity symfony
我有这个地址表格。一切都按预期进行,直到我为城市添加了一个下拉选择字段。尝试保存表单时出现此错误:
可捕获的致命错误:无法将类AppBundle \ Entity \ Address的对象转换为字符串
文档说EntityType字段旨在从Doctrine实体加载选项。
形式如下:
$builder
->add('cities', EntityType::class, array(
'class' => \AppBundle\Entity\Cities::class,
'choice_label' => 'cityname',
'choice_value' => 'cityid')
)
Run Code Online (Sandbox Code Playgroud)
这是我的实体
/**
* @var string
*
* @ORM\Column(name="cities", type="string", length=55, nullable=false)
*/
private $cities;
Run Code Online (Sandbox Code Playgroud)
和设置器/获取器:
/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)
我还添加了这个:
public function __toString() {
return $this->getCities();
}
Run Code Online (Sandbox Code Playgroud)
并得到以下结果:
可捕获的致命错误:方法AppBundle \ Entity \ Address :: __ toString()必须返回字符串值
小智 5
您应该__toString()
为您的实体实现方法:
__toString()允许类决定将其视为字符串时的反应。例如,echo $ obj; 将打印。此方法必须返回一个字符串,否则将发出致命的E_RECOVERABLE_ERROR级错误。
例如,您可以编写如下代码将您的类表示为字符串:
public function __toString() {
return $this->getCities();
}
Run Code Online (Sandbox Code Playgroud)
有关此魔术方法的 更多信息,请参见此处。