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!