prelungesc EntityForm
clasa și încerc să înlocuiesc un buton de trimitere, pentru a-i seta atributul ID HTML (încercați #1). Deoarece nu funcționează, am încercat să înfășuresc butonul într-un ambalaj <div>
. Am încercat să împachetez cu două moduri diferite (încercați #2 și încercați #3), dar nu funcționează.
Singura modalitate prin care pot trece peste butonul de trimitere este să setez „#atribute”
pentru a seta atributul HTML clasă
și să adaug propria mea clasă CSS, dar dorința mea a fost să setez un HTML id
atribut. Și am vrut să fac această înlocuire în metoda actions() (nu form()).
utilizați Drupal\Core\Entity\ContentEntityForm;
clasa MyForm extinde ContentEntityForm {
acțiuni ale funcției protejate (matrice $form, FormStateInterface $form_state) {
$actions = parent::actions($form, $form_state);
$actions['trimite'] = [
'#type' => 'trimite',
'#id' => 'buton de salvare', // <-- încercați #1
'#value' => t('Salvare'),
'#ajax' => [
'callback' => '::ajaxCallback',
'event' => 'mousedown',
'wrapper' => 'bar-wrapper-1', // <-- încercați #2
],
'#prefix' => '<div id="bar-wrapper-2">', // <-- încercați #3
'#sufix' => '</div>',
'#attributes' => [
'class' => ['foo'], // <-- încercați #4
],
];
$actions['submit_wrapper'] = [
'#type' => 'markup',
'#markup' => '<div id="bar-wrapper-1"></div>'
];
returnează $acțiuni;
}
}
Presupun că pot înlocui doar ID-ul HTML din interior formă()
, dar pare puțin inconsecvent pentru că pot suprascrie/adaug o clasă CSS.