由 js 填充的 SilverStripe DropdownField - [value] 不是有效选项

SilverStripe DropdownField populated by js - [value] is not a valid option

我有一个 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 正确填充选项。

但是,当我提交表单时,我收到消息

Please select a value within the list provided. employerA is not a valid option

我不需要在服务器端验证此字段。 我该如何阻止这种行为的发生?

我想出了一个解决方案,但我确信有一种更优雅的 SilverStripe 方法。

我扩展了 DropdownField class,并使 validate 始终 return 为真。

class NoValidationDropdownField extends DropdownField {
    public function validate($validator)
    {
        return true;
    }
}