2

私はこの2つのエンティティを持っています:

class Article
{
    /** @var ArrayCollection
    protected $tags;
}

class Tag
{
    protected $id;
    protected $name;
}

基本的に私はhttp://symfony.com/doc/master/cookbook/form/form_collections.htmlを読みましたが、私のケースを説明していません。

説明させてください。

データベースに既存のタグがあるので、記事に複数のタグを関​​連付けられるようにしたいのですが、存在しないタグの作成を許可したくありません。

REST API と Web フォームの両方でフォームを使用することを目指しているので、クライアントが を使用しidてタグを参照できるようにしたいと考えています (タグは以前にフェッチされていたはずです)。

何か案は?

4

2 に答える 2

1

次のようなものを使用できます。

$builder->add('tags', 'entity', array(
    'class' => 'AcmeHelloBundle:tag',
    'expanded' => true,
    'multiple' => true,
));
于 2012-11-23T17:39:13.240 に答える
1

エンティティ フィールド タイプeを使用できます。実際には、複数選択による選択またはチェックボックスのリストとしてレンダリングできる選択フィールド タイプです。ただし、タグが多いとオプションが多すぎて、ユーザーは満足しません。

そこで、Stackoverflow のようなタグ付けシステムを実装することをお勧めします。

loopjのように、Javascript tokeninput ライブラリを使用してプロジェクトで実行しました。実際には:

  1. まず、という名前のテキスト フィールドをレンダリングする必要がありますtags

  2. 次に、トークン処理用の Javascript ライブラリを使用して、その入力フィールドへのタグ挿入を処理する必要があります。

  3. Tagコントローラは、Doctrine からエンティティを取得するために処理する必要があるトークン化された文字列を受け取ります。

  4. 最後に、エンティティのリストを取得し、Tagそれらをエンティティに割り当てて、Articleすべてをフラッシュします。

于 2012-11-23T16:41:51.137 に答える