我有以下表格,
public function ContactForm()
{
$fields = FieldList::create(
TextField::create('Nombre', 'Tu nombre')
->setCustomValidationMessage('Por favor coloca tu nombre.')
);
$actions = FieldList::create(
FormAction::create('sendContactForm', 'Send')
);
$required = [
'Nombre',
];
$validator = new RequiredFields($required);
$form = Form::create($this, 'ContactForm', $fields, $actions, $validator);
// I'm using this novalidate for testing
$form->setAttribute('novalidate', 'novalidate');
$form->setFormMethod('POST', true);
return $form;
}
而且它没有给我错误,也没有提交成功消息。
如果我用字符串填写该字段,则表单将成功提交并将我的数据保存到模型中,并发送一封电子邮件,但我没有收到任何成功消息。
我有另一种页面类型和另一种以相同方式定义的表单,它工作正常,我不知道为什么这个没有显示错误。
如果我将该字段留空,sendContactForm
则不会调用该函数,页面会以干净的表单重新加载并且没有错误。这让我认为验证工作正常,因为它没有到达提交功能,但是即使我向某些字段添加数据,表单也返回空的事实对我来说很奇怪,因为另一个表单返回错误和先前输入的数据。
我也尝试过不使用 JS 或 CSS,以确保不是前端干扰。
它们都分别使用$ContactForm
和显示在模板中$MessageForm
。
作为参考,这里有一些指向用于两个表单/页面的完整文件的链接。
这让我发疯了好几个小时,我不知道可能出了什么问题。