1

私は通常、ユーザーが選択可能なプロパティを対応するクラスにマップします

class Person {
  /**
   * @ORM\ManyToMany(targetEntity="HobbyClass")
   */
   private $hobby
}

class HobbyClass{
   private $name; // e.g. "Outdoors"
} 

エンティティを作成または編集するには、フォームでエンティティ タイプのフォーム フィールドを使用するだけです。次に、小枝でエンティティ ビューを表示する必要がある場合は、次のようにします。

    {% for item in person.hobby %}
        <li>{{ item.name }}</li> {# e.g. "Outdoors" #}
    {% endfor %}

しかし今回は、ChoiceListInterface を実装するクラス Selectables を使用しています。

class Entity {
   /**
    * @var array
    */
    private $properties
}

class Selectables implements ChoiceListInterface {
  ...
}

次に、選択タイプのフォームフィールドを使用してこのエンティティを作成および編集します。もちろん、小枝では、以前のようにプロパティの名前ではなく、キーを取得します

    {% for item in entity.properties %}
        <li>{{ item }}</li> {#e.g. "property_key", whereas its name is "Sports"#}
    {% endfor %}

問題は、データがフォーム内でのみ意味を持つ単なるキーの配列であることです。しかし、エンティティ ビューで人間が読めるように表示する必要があります。

ChoiceListInterface を使用する理由は、選択リストが CRUD で更新されず、コードで維持できるためです。使用するのに少し手間がかかり、結合やデータベース テーブルは必要ありません。

これに対する最善の解決策は次のとおりです。

  • a. 以前のようにテーブルと関連付けを使用する
  • b. ChoiceListInterface クラスから対応する値を取得するカスタム小枝拡張のコード
  • c. 選択リストを使用し、キーを翻訳可能にして、プロパティ名として表示されるようにします
  • d. 他に何か

ありがとう

4

0 に答える 0