Puncte:0

Cum să adăugați caseta de selectare folosind hook_field_widget_WIDGET_TYPE_form_alter()

drapel gb

Rulează Drupal 9 cu modulul paragrafe, paragrafele pliabile și paragrafele jquery ui acordeon instalat. Doresc să modific formularul paragrafelor, în special în cazul în care afișează fișiere private, adăugând o casetă de selectare „Switch to Public” sub fiecare descriere a fișierului (vezi imaginea atașată).

Folosesc hook_field_widget_WIDGET_TYPE_form_alter(). Iată un exemplu de cod:

**
 * Implementează hook_field_widget_WIDGET_TYPE_form_alter().
 */

 funcția sbn_field_widget_paragraphs_form_alter(&$element, &$form_state, $context) {
     dacă (!empty($element['subform']['field_private_files'])) {
         
# $element['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = [
# '#type' => 'caseta de selectare',
# '#title' => t('Comută la public'),
# '#required' => FALSE,
# '#default_value' => FALSE,
# ];

     $element['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = array(
        '#type' => 'caseta de selectare',
        '#title' => t('Comută la public'),
        '#size' => 10,
        '#maxlength' => 255,
        '#default_value' => 1,
        '#required' => FALSE,
        '#description' => '<p>' . t('Treceți de la privat la public.') . „</p>”,
    );
 
        // dsm($element);
     }
}

Știu că elementele matricei sunt acolo, deoarece am folosit dsm pentru a tipări întregul formular dacă există ['subform']['field_private_files']:

   [field_private_files] => Matrice
        (
            [#type] => container
            [#parents] => Matrice
                (
                    [0] => field_body1
                    [1] => 7
                    [2] => subformular
                    [3] => field_body2
                    [4] => 0
                    [5] => subformular
                    [6] => field_private_files_wrapper
                )

            [#attributes] => Matrice
                (
                    [class] => Array
                        (
                            [0] => câmp--tip-fișier
                            [1] => câmp--nume-câmp-fișiere-private
                            [2] => câmp--widget-file-generic
                            [3] => paragrafe-conținut
                        )

                )

            [widget] => Matrice
                (
                    [0] => Matrice
                        (
                            [#title] => Fișiere private
                            [#descriere] => 
                            [#field_parents] => Matrice
                                (
                                    [0] => field_body1
                                    [1] => 7
                                    [2] => subformular
                                    [3] => field_body2
                                    [4] => 0
                                    [5] => subformular
                                )

                            [#required] => 
                            [#delta] => 0
                            [#greutate] => 0
                            [#type] => fișier_gestionat
                            [#upload_location] => privat://
                            [#upload_validators] => Matrice
                                (
                                    [file_validate_size] => Matrice (1)
                                    [file_validate_extensions] => Matrice (1)
                                )

                            [#value_callback] => Matrice
                                (
                                    [0] => Drupal\file\Plugin\Field\FieldWidget\FileWidget
                                    [1] => valoare
                                )

                            [#process] => Matrice
                                (
                                    [0] => Matrice (2)
                                    [1] => Matrice (2)
                                )

                            [#progress_indicator] => throbber
                            [#extended] => 1
                            [#field_name] => field_private_files
                            [#entity_type] => paragraf
                            [#display_field] => 1
                            [#display_default] => 1
                            [#description_field] => 1
                            [#cardinalitate] => -1
                            [#default_value] => Matrice
                                (
                                    [target_id] => 436
                                    [afișare] => 1
                                    [descriere] => Procesul verbal al sesiunii executive 15-11-21
                                    [fids] => Matrice (1)
                                )

Orice sugestii despre cum să codificați acest lucru, astfel încât o casetă de selectare să fie tipărită sub „descrierea” fiecărei secțiuni Fișiere private din fiecare paragraf (ar putea fi mai multe paragrafe atașate fiecărui nod). Mulțumiri!

sonfd avatar
drapel in
Acest lucru ar trebui făcut cu un widget de câmp pentru câmpul Fișiere private, nu prin formularul de paragraf.
SomebodySysop avatar
drapel gb
Poți indica un exemplu de ceea ce vrei să spui? Mi-a luat o veșnicie doar să-mi dau seama cum să folosesc cârligul cu paragrafe! Nu există prea multă documentație despre cum se utilizează acolo.
sonfd avatar
drapel in
https://www.drupal.org/docs/creating-custom-modules/creating-custom-field-types-widgets-and-formatters/create-a-custom-field-widget

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.