Puncte:1

Cum se adaugă câmpuri noi în caseta de dialog „editați media” în încorporarea media

drapel cn

Încerc să adaug o nouă casetă de selectare în caseta de dialog care apare atunci când aleg „editează media” pe un suport media încorporat într-un WYSIWYG. Mă refer la caseta de dialog care prezintă opțiuni precum „legendă” și „aliniere”

Am reușit să fac câmpul să apară utilizând

funcția mymodule_form_alter(matrice &$form, FormStateInterface $form_state, șir $form_id) {
if($form_id=='editor_media_dialog'){
  $form['size'] = [
    '#title' => t('Dimensiune'),
    '#type' => 'selectați',
    '#options' => [
      '' => t('Implicit'),
      '-small' => t('Mic'),
      '-mediu' => t('mediu'),
      '-large' => t('Mare'),
    ],
  ];
 }
}

dar se pare că nu pot să economisesc acea valoare oricum. La salvarea și redeschiderea casetei de dialog nu există nicio referință la noua valoare din $form_state.

Care ar fi modalitatea corectă de a adăuga câmpuri la caseta de dialog „editare media” a entităților media încorporate într-un WYSIWYG?

Puncte:1
drapel cn

Aceste dialoguri funcționează astfel:

  • Când salvezi formularul, totul înăuntru atribute în starea formularului este adăugat ca atribut HTML literal la <drupal-media> element pentru care a fost lansat modalul. Deci datele sunt salvate în marcajul în sine.
  • Când încărcați din nou formularul, toate atributele HTML aflate în prezent pe element sunt transmise în formular, astfel încât intrările să poată fi populate.

Deci tot ce trebuie să faci este:

  1. Introduceți elementul de formular în atribute matrice, deci va fi aplicat markupului automat. Puteți face acest lucru setând #părinţi asupra elementului.
  2. Seteaza #valoare implicită la cel trecut de la redactor. Aceste valori sunt disponibile din intrarea utilizatorului, mai degrabă decât din valorile stării formularului.

Codul final ar putea arăta astfel:

$size = $form_state->getUserInput()['editor_object']['atribute']['size'] ?? '';

$form['size'] = [
  '#title' => t('Dimensiune'),
  '#type' => 'selectați',
  '#options' => [
    '' => t('Implicit'),
    '-small' => t('Mic'),
    '-mediu' => t('mediu'),
    '-large' => t('Mare'),
  ],
  '#parents' => ['atribute', 'mărime'],
  '#default_value' => $size,
];
Matt avatar
drapel cn
Mulțumesc că a funcționat grozav! util ca întotdeauna Clive

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.