1

「利用規約を読み、同意します」チェックボックスが付いたフォームがあります。フォームが有効であると見なされるには、チェックボックスをオンにする必要がありますが、もちろん、その値をデータベースに保存する理由はなく、エンティティに属性を追加する理由もありません。

ボックスがチェックされていない限りフォームが有効であると見なされないように、Symfony2でこの種の機能を実装するための良い方法は何ですか?

4

2 に答える 2

5

この質問はかなり古く、Symfonyはこれをたくさん更新しました。Symfony 3.xの場合、次のようなことができます。

$builder->add('terms', CheckboxType::class, [
    'mapped' => false,
    'constraints' => new IsTrue(),
]);
于 2016-12-12T15:30:17.963 に答える
2

symfonyドキュメントから:

フォームをオブジェクトにマッピングすると、すべてのフィールドがマッピングされます。マップされたオブジェクトに存在しないフォーム上のフィールドがあると、例外がスローされます。基になるオブジェクトにマップされないフォームに追加のフィールドが必要な場合(たとえば、「これらの条件に同意しますか」チェックボックス)、property_pathオプションをfalseに設定する必要があります。

use Symfony\Component\Form\FormBuilderInterface;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('task');
    $builder->add('dueDate', null, array('property_path' => false));
}

フィールドデータには、コントローラーで次の方法でアクセスできます。

$form->get('dueDate')->getData();
于 2012-09-17T17:28:05.690 に答える