我有一个城市添加表单:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', null, array(
'label' => 'City',
));
$builder->add('country', 'genemu_jqueryautocompleter_entity', array(
'class' => 'X\tBundle\Entity\Country',
'property' => 'name',
'route_name' => 'ajax_country',
'required' => true,
'label' => 'Country',
));
}
国家是实体。当我提交此表单时 - S2会返回错误:cannot save because cannot convert Object to String
为此,我使用魔术方法__toString()
并返回(string)$this->getId()
;
但我不确定 - 这是对的吗?
答案 0 :(得分:1)
最好的办法是为您的国家/地区实体创建一个FormType并将其嵌入主窗体中。请参阅食谱中的How to Embed a Collection of Forms来解释如何执行此操作。
你想做的事情是可能的,但它会让事情变得非常混乱。
答案 1 :(得分:1)
所以,我们使用下一件事:
/**
* @var X\tBundle\Entity\Country;
*
* @ORM\ManyToOne(targetEntity="X\tBundle\Entity\Country")
* @ORM\JoinColumn(name="country_id", referencedColumnName="id", nullable=false)
*/
public $country;