0

私はこのフォームクラスを持っています

class ProfileType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder

            ->add('name')
            ->add('class')
            ->add('age')
            ->add('parent')
     }

私の問題は、すべてのフィールドが必要なバックエンド用と、フィールドがほとんど必要ないフロントエンド用の2つのフォームが必要なことです。

2つのフォームに別々のクラスを作成する必要がありますか、それとも、フロントエンドに親を表示したくない場合のように、2つのフォームを1つのクラスに入れることができますか。

問題は、テンプレートに表示するフィールドが少ない場合、フォームを送信するときにそれらのフィールドがnullに設定されることです。だから私はクラス自体から削除する必要があります

4

2 に答える 2

1

$optionsパラメーターを使用できます。

$form = $this->createForm(new ProfileType(), $profile, array('status' => 'backend'));

そしてあなたのbuildFormで:

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('name')
            ->add('class')
            ->add('age')
            ->add('parent');

    if($options['status'] == 'backend')
     {
        $builder->add('other1')
                ->add('other2');
     }
}

しかし、それはかなり汚い解決策です。個人的には2つのタイプを作成します。

于 2012-08-02T09:47:45.540 に答える