組み込みフォームの全部または何も検証エラーの表示:Optional embed form in Symfony 2:私は、エンティティ電話用の埋め込みフォームを持つエンティティ人するためのフォームを持っているsymfonyの3:私はここで説明するように、正確に同じ問題を抱えている
。ユーザーはのすべてのフィールドを空白のままにしてフォームを有効にできます。しかし、の電話番号が入力された場合、すべて電話 -fieldsが有効である必要があります。私の最初のアプローチの間に
は、私は単に@Assert\NotNull()
なし@Assert\Valid()
で人の電話プロパティを注釈付き。新しいPersonを入力した場合にのみ問題ありません。既存のの人物との電話機が既に入力されている場合は、電話フィールド(有効であるはずです)を削除しても有効な送信にはなりません。
検証コールバック関数とthis solutionの検証はsymfonyの3のためにいくつかの変更で動作します:
/**
*
* @Assert\Callback()
*/
public function validatePhone(ExecutionContextInterface $context)
{
if (/* Fields are not empty */)
{
$context->getValidator()->inContext($context)->validate($this->phone);
}
}
しかし、フォームを送信した後、携帯電話のフィールドの検証エラーは、ページには表示されません。私はデバッグツールバーでしか見ることができません。
フォーム提出後にエラーが表示されるように、この解決策を何とか変更する必要がありますか?
でも多分、私の最初のアプローチはうまくいくかもしれない、電話のすべてのフォームフィールドがクリアされた場合は、nullに既存の人オブジェクトのプロパティ電話を設定することが何とか可能ですか?