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

问题描述 投票:0回答:1

我有一个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
1个回答
0
投票

我制定了一个解决方案,但我确定有一种更为优雅的SilverStripe方式。

我扩展了DropdownField类,并使validate始终返回true。

class NoValidationDropdownField extends DropdownField {
    public function validate($validator)
    {
        return true;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.