Ne actualizăm site-urile pe rând de la Drupal 8 la Drupal 9 și există o linie de cod în tema noastră personalizată care este ultima dintre problemele noastre.
Primim următoarea eroare pe View care utilizează un filtru expus:
Drupal\Core\Security\UntrustedCallbackException: Render #pre_render apelurile inverse trebuie să fie metode dintr-o clasă care implementează \Drupal\Core\Security\TrustedCallbackInterface sau să fie o funcție anonimă. Reapelarea a fost MYSITE_form_alter_views_exposed_form_MYVIEW_pre_render. Consultați https://www.drupal.org/node/2966725 în Drupal\Core\Render\Renderer->doTrustedCallback() (linia 96 din core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php).
În fișierul OURTHEME.theme, avem această funcție:
/**
* Modificare personalizată a formularelor pentru evenimente.
*/
funcția OURTHEME_form_alter_views_exposed_form_events_pre_render($form) {
$câmpuri = [
„field_start_date_value”,
„field_end_date_value”,
„localitate_adresă_câmp”,
];
foreach ($câmpuri ca $câmp) {
$form[$field]['#title_display'] = 'după';
}
$form['field_date_range_end_value']['#prefix'] = '<div class="event-exposed-form">';
$form['field_event_address_locality']['#suffix'] = '</div>';
returnează $form;
}
Și funcția este numită aici (doar un fragment de cod din această funcție):
/**
* Acestea sunt modificările variabilelor de formulare înainte ca acestea să fie redate.
*/
funcția OURTHEME_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'views_exposed_form' && strpos($form['#id'], 'views-exposed-form-events-') === 0) {
$form['#pre_render'][] = 'OURTHEME_form_alter_views_exposed_form_events_pre_render';
}
returnează $form;
}
Din ceea ce am putut intui din cercetările pe care le-am făcut până acum, se pare că, în mod normal, indiferent de clasă în care sunt utilizate aceste tipuri de funcții, au implementat Drupal. TrustedCallbackInterface. Din păcate, singurele informații pe care le-am găsit au fost în diferitele patch-uri aplicate proiectelor de pe Drupal.org, așa că încerc să împletesc o metodologie din aplicații aleatorii ale acesteia.
Desigur, există pagina Drupal API, dar aceasta nu este deosebit de utilă atunci când vine vorba de a pune împreună piesele într-o metodologie utilă fără a cunoaște restul API-ului ca pe dosul mâinii tale.
Știe cineva dacă există vreo documentație despre cum se aplică TrustedCallbackInterface la o funcție utilizată anterior $form['#pre_render'][], în special în THEME.theme care nu este configurat la fel ca orice clasă personalizată veche dintr-un Modul?