拜托,帮助我!
我正在尝试为带有颜色的产品制作表单。颜色是数据库中的对象。
$builder
->add('product')
->add('colors', 'choice',
array(
// $colors is array of objects [id: {id: 1, name: "red", "img": "pic_path"}
'choices' => $colors,
'expanded' => true
)
)
;
我想获得一个带有自定义无线电输入的表单,其中包含Color-object的名称和图片。
答案 0 :(得分:1)
我有同样的问题,我的问题通过以下解决方案解决了
$dql="SELECT c.id, c.name FROM YourBundle:YourTable c ORDER BY c.id";
$query = $em->createQuery($dql)->getArrayResult();
for ($i=0; $i < count($query) ; $i++)
{
$queryArray[$query[$i]['id']]=$query[$i]['name'];
}
$form = $this->createFormBuilder()
->add('colors', 'choice', array('choices' => array( $queryArray)))
->getForm();
答案 1 :(得分:0)
您可以在this documentation中找到有关自定义字段类型和自定义模板的文档。
我会创建一个choice_with_images
自定义类型,扩展choice
类型并为其创建自定义模板。
此外,代码名称choice
后代码中缺少引号。
答案 2 :(得分:0)
如果颜色是项目中的实体,那么您应该使用实体字段类型。
$builder
->add('product')
->add('colors', 'entity',
array(
'class' => 'WhateverYourBundle:Color',
'multiple' => false,
'expanded' => true
)
);
如果产品只有一些颜色可用,那么您也可以将“query_builder”选项传递给数组。请参阅文档:http://symfony.com/doc/2.0/reference/forms/types/entity.html
哦,不要忘记在你的颜色实体中添加一个__toString()方法,如果还没有那个。