是否可以禁用指定字段的后端(服务器端)验证?
我正在尝试使用动态加载的选项发送表单我收到错误“错误:此值无效。”
我认为symfony正在检查我的值是否在默认声明列表中(在我的情况下是空列表),如果不是则返回false。
答案 0 :(得分:27)
这令人困惑,但这种行为并不是真正的验证相关,因为它是由“ChoiceToValueTransformer”引起的,它确实在您预先声明的列表中搜索条目。如果您的列表为空或者您想要禁用变换器,则只需重置它即可。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('yourField', 'choice', array('required'=>false));
//more fields...
$builder->get('yourField')->resetViewTransformers();
}
然后您的自定义验证将介入(如果存在)。
答案 1 :(得分:2)
答案 2 :(得分:0)
在表单类型类中添加此buildForm
方法,以便您可以验证输入字段值,而不是从select字段值中选择;
$builder->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) {
$form = $event->getForm();
if ($form->has('field')) {
$form->remove('field');
$form->add(
'field',
'text',
['required' => false]
)
}
}
);