Рейтинг:3

Как получить имя поля в обработчике проверки?

флаг kz

у меня есть обычай класс TextWidget расширяет WidgetBase

Внутри него у меня есть собственный обработчик проверки, который выглядит так:

общедоступная функция проверки ($ элемент, FormStateInterface $ form_state) {
  $значение = $элемент['#значение'];
  $label = 'Это поле'; // Какой способ получить имя поля, обращенное к человеку?
  если (strlen($значение) === 0) {
    $form_state->setError($element, $this->t('@label не может быть пустым.', ['@label' => $label]));
  }
}

Выдает ошибку "Это поле не может быть пустым". если поле пустое.

Я хочу заменить статический текст «Это поле» на фактическое имя поля для человека.

Есть ли общедоступный метод, который позволяет мне это сделать?

Рейтинг:7
флаг us

Класс, который расширяет виджетбаза можно получить этикетку с $this->fieldDefinition->getLabel(). Используется, например, из ВиджетБасе::форма().

$элемент = [
  '#title' => $this->fieldDefinition->getLabel(),
  '#description' => $this->getFilteredDescription(),
];

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.