【发布时间】:2013-04-20 19:29:18
【问题描述】:
当我需要显示汽车与其品牌之间的 OneToMany 关系时,我有一个表单。
当我现在点击下拉菜单时,我只能看到汽车名称。因为它是从汽车实体自动创建的。
我希望在下拉列表中看到 NameOfTheCar - NameOfTheBrand。对于每一个选择
我的 CarType 有如下字段:
$builder->add('cars', 'choice', array(
'choices' => array(
'Test' => 'Example',
),
'required' => true,
));
我该怎么做?
编辑:我听从了雨果的建议。
现在我明白了
$builder->add('lake', 'entity', array(
'class' => 'Pondip\KeepnetBundle\Entity\CatchReport',
'required' => true,
));
而我的 CatchReport 的 __toString 是
public function __toString()
{
return $this->car .' - '. $this->car->getBrand();
}
当湖是
/**
* @var integer
*
* @ORM\ManyToOne(targetEntity="Pondip\CarBundle\Entity\Car")
* @ORM\JoinColumn(name="car_id", referencedColumnName="id")
* @Assert\NotBlank()
*/
private $car;
在我的品牌实体中,我有:
/**
* @var integer
* @Assert\Type(type="Pondip\CarBundle\Entity\Brand")
*
* @ORM\ManyToOne(targetEntity="Pondip\CarBundle\Entity\Brand")
* @ORM\JoinColumn(name="brand_id", referencedColumnName="id")
*/
private $brand;
现在我的 toString() 函数出现错误。我做错了什么?
谢谢
【问题讨论】:
-
__toString 错误是什么?我认为错误是因为 $this->car 正在返回一个对象。不应该是 $this->car->getName()
-
致命错误:方法 Pondip\KeepnetBundle\Entity\Catchreport::__toString() 不得在...中抛出异常
-
尝试制作一个真正简单的 __tostring (ex : return "test";) 方法首先测试它是否有效。如果确实添加了第二部分,则添加第一部分(检查它是否有效)。
-
我试过了,也没有任何结果:return $this->car->getName() 。 - '。 $this->car->getBrand()->getName();
-
是的,当返回 $this->car 时。 - '。 $这个->汽车;它有效
标签: php forms symfony drop-down-menu one-to-many