Рейтинг:1

Ошибка форматирования настраиваемого поля в create()

флаг cn

PHPStorm, PHP 7.4 IDE выделяет $container->get('date.formatter') с

"Ожидаемый параметр типа "\Drupal\Core\Datetime\DateFormatterInterface", предоставлен "объект""

Эта функция является точной копией ядра TimestampFormatter (которая также показывает ошибку)

/**
 * {@inheritdoc}
 */
общедоступная статическая функция create(ContainerInterface $container, массив $configuration, $plugin_id, $plugin_definition) {
  вернуть новую статику(
    $plugin_id,
    $plugin_definition,
    $ конфигурация ['field_definition'],
    $ конфигурация ['настройки'],
    $ конфигурация ['метка'],
    $ конфигурация ['режим_просмотра'],
    $ конфигурация ['сторонние_настройки'],
    $container->получить('date.formatter'),
    $container->get('entity_type.manager')->getStorage('date_format')
  );
}

__construct ищет DateFormatterInterface (см. ниже) и не уверен, как это работает в ядре, но мои «viewElements» никогда не срабатывают с тех пор, как началась эта ошибка.

общедоступная функция __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, массив $settings, $label, $view_mode, массив $ Third_Party_settings, **DateFormatterInterface $date_formatter**, EntityStorageInterface $date_format_storage) {

Что такое правильный container- > get для возврата правильного date.formatter, а не объекта, который приводит к сбою создания без каких-либо ошибок, которые я вижу?

Рейтинг:1
флаг cn

Ваш код в порядке, но вы можете удалить предупреждения, установив Плагин PHPStorm Symfony.

Это учит IDE, как разрешить правильный класс из имени службы, которое вы предоставляете для $контейнер->получить().

флаг cn
Спасибо, @Clive, поскольку я видел, как ты отвечаешь на тысячи вопросов на протяжении многих лет. Престижность. Странно то, что мое поле настроено на форматирование на основе этого плагина, но оно больше не вызывается при просмотре узла. Некоторое время назад это работало, но не сейчас. У меня есть точки останова, установленные в конструкторе и элементах представления, но они никогда не срабатывают.
флаг cn
Скорректированная IDE и предупреждение исчезли. Думаю, я неправильно понимаю, как форматировщик работает для поля при редактировании узла. Формат моего поля dateTime должен меняться в зависимости от условия. Форматтер не взаимодействует с виджетом отображающим дату? Должен ли я задать это как отдельный вопрос?

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

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