我有一个SilverStripe表单,其中包含一个显示在我的网站前端的下拉字段。
$fields = new FieldList(
...
DropdownField::create(
'Employer',
'Employer'
)
...
);
....
$actions = new FieldList(
FormAction::create('doReportIssue')->setTitle('Report')
);
$required = new RequiredFields('FirstName', 'LastName');
$form = new Form($this, 'ReportIssueForm', $fields, $actions, $required);
return $form;
我有一些JavaScript可以在下拉菜单中设置选项。
let employerEl = $("#Form_ReportIssueForm_Employer");
let employers = [{ "name":"employerA" }, { "name":"employerB" }];
employers.forEach((employer) => {
employerEl.append($("<option></option>").val(employer.name).text(employer.name));
});
});
该字段在表单中正确生成,并且javascript正确填充了选项。
但是,当我提交表格时,我收到消息
请在提供的列表中选择一个值。雇主A不是有效的选项
我不需要此字段在服务器端进行验证。如何阻止这种行为的发生?
我制定了一个解决方案,但我确定有一种更为优雅的SilverStripe方式。
我扩展了DropdownField类,并使validate
始终返回true。
class NoValidationDropdownField extends DropdownField {
public function validate($validator)
{
return true;
}
}