Dezvolt o caracteristică care permite utilizatorilor anonimi să primească prin e-mail rezultatul a fațete + searchAPI.
Fațetele și API-ul de căutare funcționează perfect. Modulul personalizat care permite trimiterea unui e-mail. Am creat, de asemenea, un formular personalizat (FormAPi) pentru a permite utilizatorului să-și dea e-mailul și să trimită datele la trimitere.
Pentru a obține rezultatele căutării de fațete, folosesc preprocess_views_view
în .modul
fişier
function my_module_preprocess_views_view__VIEW_ID(matrice &$variabile): void {
foreach ($variabile['view']->result as $result) {
$nod = $rezultat->_obiect->getEntity();
$titlu = $nod->get('titlu')->getValue()[0]['valoare'];
$câmp_personalizat = $nod->get('câmp_personalizat')->getValue()[0]['valoare'];
}
}
De fiecare dată când se modifică o fațetă, pot vedea rezultatul cu a dump()
si totul este ok. Poate că acesta nu este cârligul potrivit în cazul meu, dar returnează ceea ce mă aștept.
Cu toate acestea, nu știu cum să transmit rezultatul acestui cârlig în formularul meu personalizat care este inserat într-un bloc personalizat pe pagina cu vizualizarea rezultatelor fațete.
Când utilizatorul trimite formularul, trebuie să știu ce cârlig a returnat anterior în SendSearchForm()
funcția publică submitForm(matrice &$form, FormStateInterface $form_state) {
// e-mail introdus de utilizator
$email = $form_state->getValue('email');
// trimite e-mail, dar trebuie să trimită și rezultatele my_module_preprocess_views_view__VIEW_ID
$this->sendEmail($email, $facets_result);
}
Aveți o sugestie pentru a face acest lucru corect cu Drupal?
EDIT: Am văzut decât mi-aș fi putut folosi funcția drupal_static
. Este o idee bună?