1

選択できるカテゴリのドロップダウンメニューを表示するフォームがあります。

これらのカテゴリはGedmoTreeExtensionを使用して設定されるため、カテゴリに子カテゴリを含めることができます。

フォームビルダーに、特定のグループに属するカテゴリのみを選択するカスタムクエリがあります。ただし、ドロップダウンで、どのカテゴリが親で、どのカテゴリが子であるかを表示できる必要があります。

Parent Category 1
  -- Child Category A
  -- Child Category B
Parent Category2
  -- Child Category C

どうすればこれを達成できるか考えていますか?

また、formtypeを呼び出しているコントローラーからquery_builderに変数を渡すにはどうすればよいですか?

4

3 に答える 3

1

数日前、私はまったく同じことを達成しようとしていました!ここでNeurofrソリューションを使用しました: Symfony2、Doctrine Extensionsツリー:「ツリー」のようなドロップダウン選択リストの生成

そしてそれは仕事です。次に、ツリーから最後の子を取得したすべてのオプションを非アクティブ化しようとします。

于 2012-05-07T19:36:44.563 に答える
1

親を選択する必要がない場合は、optgroup タグを使用できます

<select>
    <optgroup label="Category 1">
        <option>Option 1...</option>
        <option>Option 2...</option>
        <option>Option 3...</option>
    </optgroup>
    <optgroup label="Category 2">
        <option>Option 1...</option>
        <option>Option 2...</option>
        <option>Option 3...</option>
    </optgroup>
</select>

編集:

Symfony 2 は、配列を持つ optgroup タグをサポートしています(テストされていないため、エラーが含まれる可能性があります)

public function buildForm(FormBuilder $builder, array $options)
{
    $category_choices = array(
        array('Category 1' => array(
            '1' => 'Option 1...',
            '2' => 'Option 2...',
            '3' => 'Option 3...'
        )),
        array('Category 2' => array(
            '4' => 'Option 4...',
            '5' => 'Option 5...'
        ))
    );

    $builder->add('category_list', 'choice', array(
        'label' => 'Category',
        'choices' => $category_choices
    ));
}
于 2012-04-30T22:01:50.750 に答える
0

Symfony \ Bridge \ Doctrine \ Form \ ChoiceList \ EntityChoiceListを拡張し、formBuilderで使用します(例:

$formBuilder
      ->add('parent', 'entity',
            array(
              'label' => 'Parent',
              'em' => $em,
              'class' => 'w3des\\Bundle\\SiteBundle\\Entity\\Menu',
              'choice_list' => new MenuChoiceList($em, $group, $cfg['tree']),
              'required' => false,
              'empty_value' => '----'
            ));

getEntity()、getEntities()、getIdentifierValues()、そしておそらくコンストラクターも上書きする必要があります

于 2012-06-17T11:13:21.643 に答える