SilverStripe DropdownField, заполненный js - [значение] не является допустимым параметром - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть форма 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 правильно заполняет параметры.

Однако, когда я отправляю форму, я получаю сообщение

Пожалуйста, выберите значение в списке. EmployerA не является допустимым параметром

Мне не нужно проверять это поле на стороне сервера. Как мне остановить это поведение?

1 Ответ

0 голосов
/ 26 апреля 2020

Я разработал решение, но я уверен, что есть более элегантный способ сделать это в SilverStripe.

Я расширил класс DropdownField и заставил validate всегда возвращать true.

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