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 オブジェクトからの名前と画像を含む、カスタムのラジオ入力を含むフォームを取得したいと思います。

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

カスタムフィールドタイプとカスタムテンプレートに関するドキュメントは、このドキュメントにあります。

choice_with_imagesタイプを拡張するカスタムタイプを作成し、choiceそのカスタムテンプレートを作成します。

また、タイプ名の後のコードに引用符がありませんchoice

于 2013-03-15T23:59:39.423 に答える
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() メソッドがない場合は、colors エンティティに __toString() メソッドを追加することを忘れないでください。

于 2013-03-18T16:44:33.140 に答える