【发布时间】:2017-09-24 00:44:11
【问题描述】:
我遇到的问题与此处描述的完全相同:Optional embed form in Symfony 2:
我有一个实体 Person 的表单,其中嵌入了实体 Phone 的表单。用户可以将 Phone 的所有字段留空,表单将有效。但如果填写了Phone 的单个字段,则所有Phone 字段都必须有效。
在我的第一个方法中,我只是用@Assert\Valid() 而不用@Assert\NotNull() 来注释Person 的Phone 属性。只有在输入一个新的 Person 时才能正常工作。在编辑现有 Person 并且 Phone 属性已被填写时,删除所有 Phone 字段(应该是有效的)不会结果转化为有效的提交。
带有验证回调函数的this solution 验证适用于 Symfony 3 的一些修改:
/**
*
* @Assert\Callback()
*/
public function validatePhone(ExecutionContextInterface $context)
{
if (/* Fields are not empty */)
{
$context->getValidator()->inContext($context)->validate($this->phone);
}
}
但提交表单后,电话字段的验证错误不会显示在页面上。我只能在调试工具栏中看到它们。
也许,这个解决方案需要修改一下,让表单提交后显示错误?
但是,如果可以将现有 Person 对象的属性 Phone 设置为 null,如果 Person 的所有表单字段em>手机清空了吗?
【问题讨论】:
标签: php forms symfony validation