由 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;
}
}
我有一个 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;
}
}