Iată un formular care utilizează DI pentru $this->entity_type_manager
Există și un buton radio cu Ajax (am adăugat codul deoarece poate este motivul problemei mele)
clasa myForm extinde FormBase {
privat ?EntityTypeManagerInterface $entity_type_manager=NULL;
funcția publică __construct(Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager) {
$this->entity_type_manager=$entity_type_manager;
}
funcția publică statică create(ContainerInterface $container) {
returnează static nou (
$container->get('entity_type.manager'),
);
}
funcția publică buildForm(array $form, FormStateInterface $form_state) {
// păstrează valoarea în $form_state pentru a fi folosită la trimitere
$form_state->set('entity_type_manager', $this->entity_type_manager);
...
// Poate că problema este componenta Ajax
$form['container'] = [
'#type' => 'container',
'#prefix' => '<div id="ajax-wrapper">',
'#sufix' => '</div>',
'my_radio' => [
'#type' => 'radiouri',
'#options' => ["option1","option2"],
'#required' => TRUE,
'#default_value' => $type_of_bo,
'#ajax' => [
'callback' => [$this, 'ajaxGetInvestmentHandler'],
'wrapper' => 'ajax-wrapper',
„eveniment” => „dați clic pe intrare”,
],
],
...
];
}
funcție publică statică ajaxGetInvestmentHandler(matrice $form, FormStateInterface $form_state) {
returnează $form['container'];
}
funcția publică submitForm(matrice &$form, FormStateInterface $form_state) {
// $this->entity_type_manager este NULL
// $form_state->get('entity_type_manager') este, de asemenea, NULL
...
}
...
}
După cum puteți vedea în Trimite
, $this->entity_type_manager
este NULL și $form_state->get('entity_type_manager')
este, de asemenea, NULL.
Ce s-a întâmplat?