1

请帮我!

我正在尝试为具有颜色的产品制作表格。颜色是数据库中的对象。

$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 的名称和图片。

4

3 回答 3

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();
于 2013-03-18T15:57:08.670 回答
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() 方法,如果那里还没有的话。

于 2013-03-18T16:44:33.140 回答
0

您可以在本文档中找到有关自定义字段类型和自定义模板的文档

我会创建一个choice_with_images自定义类型来扩展该choice类型并为它制作一个自定义模板。

此外,您的代码中类型 name 后面缺少引号choice

于 2013-03-15T23:59:39.423 回答