Вот форма, использующая DI для $this->entity_type_manager
Также есть переключатель с Ajax (я добавил код, так как это может быть причиной моей проблемы)
класс myForm расширяет FormBase {
частный ?EntityTypeManagerInterface $entity_type_manager=NULL;
общедоступная функция __construct (Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager) {
$this->entity_type_manager=$entity_type_manager;
}
общедоступная статическая функция create(ContainerInterface $container) {
вернуть новую статику(
$container->получить('entity_type.manager'),
);
}
общедоступная функция buildForm (массив $ form, FormStateInterface $ form_state) {
// сохраняем значение в $form_state для использования при отправке
$form_state->set('entity_type_manager', $this->entity_type_manager);
...
// Возможно, проблема в компоненте Ajax
$ форма ['контейнер'] = [
'#type' => 'контейнер',
'#prefix' => '<div id="ajax-wrapper">',
'#суффикс' => '</div>',
'мое_радио' => [
'#type' => 'радио',
'#options' => ["опция1","опция2"],
'#required' => ИСТИНА,
'#default_value' => $type_of_bo,
'#ajax' => [
'обратный вызов' => [$this, 'ajaxGetInvestmentHandler'],
'обертка' => 'ajax-обертка',
'событие' => 'нажмите ввод',
],
],
...
];
}
статическая публичная функция ajaxGetInvestmentHandler (массив $ form, FormStateInterface $ form_state) {
возврат $form['контейнер'];
}
публичная функция submitForm (массив и $ форма, FormStateInterface $ form_state) {
// $this->entity_type_manager равен NULL
// $form_state->get('entity_type_manager') также имеет значение NULL
...
}
...
}
Как вы можете видеть в представить
, $this->entity_type_manager
равно NULL и $form_state->получить('entity_type_manager')
также NULL.
Что не так?