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?