2

Doctrineには、特定のデータを構築するために相互に依存する一連のエンティティがあり、それらのエンティティの2つからのデータを使用するフォームを作成する必要があります。

Magazineエンティティ、Issueエンティティ、Chapterエンティティがあります。マガジン(Mag1、Mag2)には、1つのマガジンにのみ属するIssueという名前があり、「番号」があります(Mag1-> Issue 1、Mag1-> Issue 2、Mag3-> Issue 1、Mag2-> Issue '夏')。章は1つのIssueに属している必要がありますが、フォームを作成するときに、Issueセレクターを作成するには、2つのエンティティからのプロパティを連結する必要があります。

class ChapterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name')
        ->add('number')
        ->add('issue', 'entity', array(
                'class' => 'Bundle:Issue',
                'property' => 'magazine.name'
        ))
    ;
}
...

私がする必要があるのは、「プロパティ」のようなものに連結することです'magazine.name'+'number''number'番号が追加されるIssueはどこにありますか.。php文字列のようなものと連結しようとすると、文字列ではないため機能しません。私がしなければならないこと、またはそれがこのようにできるかどうか。

4

1 に答える 1

7

Issueで、連結を行う新しいゲッターを作成します。ManyToOne関係を適切に設定した場合、ゲッターは次のようになります。

public function getMagazzineAndIssue() {
   return $this->magazine->getName() . $this->number;
}

フォームで、次の新しいメソッドをプロパティとして使用します。

$builder
    ->add('name')
    ->add('number')
    ->add('issue', 'entity', array(
            'class' => 'Bundle:Issue',
            'property' => 'magazineAndIssue'
    ))
于 2012-11-06T00:50:20.327 に答える