4

これが可能であることはわかっていますが、どこから始めればよいかわかりません。私の主な問題は、フォーム クラスの設定方法を理解することです。

私のエンティティ:

数式 (id、コード、名前、formulaColors)

FormulaColor (数式、色、パーセンテージ)

色 (id、コード、名前、formulaColors)

テーブル グリッドにすべての色を表示する特定の数式の複数選択チェックリストを表示したいと考えています。グリッドには、コード、名前、および各色のチェックボックスを表示する列があります。ただし、これらはおそらく重要な詳細ではありません。ユーザーはボックスにチェックを入れ、送信および永続化するときに、チェックボックスを Formula->formulaColors に追加し、最終的に FormulaColor テーブルに追加する必要があります。また、すでに数式に属している色は、フォームが作成されたときに既にチェックされている必要があります。FormulaColorテーブルがパーセンテージフィールドのない真の結合テーブルであった場合、これは私にとってより簡単になると思います。

コントローラー アクションでは、色を選択する必要がある数式にアクセスできます。

少なくとも大まかに言えば、私のフォームクラスはどのように見えるでしょうか?

私のフォームクラス:

class ChooseColorsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('formulaColors', 'entity', array(
                'class' => 'PrismPortalCommonBundle:Color',
                'property' => 'code',
                'expanded' => true,
                'multiple' => true,
            ));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
                'data_class' => 'Prism\Portal\CommonBundle\Entity\Formula'
            ));
    }

    public function getName()
    {
        return 'prism_portal_adminbundle_choosecolorstype';
    }
}

ただし、これにより例外が発生します

エラー: /vagrant/src/Prism/Portal/CommonBundle/Entity/Formula.php 行 201 で未定義のメソッド Prism\Portal\CommonBundle\Entity\Color::getPercentage() を呼び出します

普段の付き合いではないことも関係していると思いますmany-to-manygetPercentage()この例外に対処する方法がわかりません

アップデート

まだ試す機会がありませんが、明日試します。これが私の問題に対する答えかもしれないと思います: http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html

Color を直接処理するために Formula エンティティにミューテータとアクセサを追加することは考えていませんでした。

4

0 に答える 0