5

symfony2 フォームを送信していますが、エンティティのメール フィールドが入力されておらず、そのプロパティが「true」として送信された場合、特定のエンティティ プロパティを false に設定したいと考えています。

私は今これを行います:

$myForm = $this->createForm(new FormType(), $myEntity);

$myForm->handleRequest($request);
if ($myForm->isValid()) {
    if (!$myEntity->getEmail()) {
        $myEntity->setProperty(false);
    }
}

送信後にフォームが表示されたときに、プロパティに対応するチェックボックスがオフになっていることが期待されます。しかし、フォームのプロパティ チェックボックスはそれに応答せず、チェックされたままになります。

これを適切に行う方法を知っている人はいますか?

4

1 に答える 1

3

これは、フォームが既にエンティティにバインドされているためだと思います。フォームはエンティティのデータを取得しており、エンティティが変更されても更新されません。以下を使用して、フォームを直接操作できます。

$myForm['someProperty']->setData( false );

しかし、最初の行に従ってフォームを完全に再構築することをお勧めします。

于 2013-07-09T08:53:25.330 に答える