Я разрабатываю функцию, которая позволяет анонимным пользователям получать по электронной почте результат грани + поискAPI.
Facets и Search API работают отлично. Пользовательский модуль, который также позволяет отправлять электронные письма. Я также создал пользовательскую форму (FormAPi), чтобы пользователь мог отправлять свою почту и отправлять данные при отправке.
Чтобы получить результаты поиска фасетов, я использую preprocess_views_view
в .модуль
файл
функция my_module_preprocess_views_view__VIEW_ID (массив и переменные $): недействительным {
foreach ($variables['view']->результат как $результат) {
$node = $result->_object->getEntity();
$title = $node->get('title')->getValue()[0]['value'];
$custom_field = $node->get('custom_field')->getValue()[0]['value'];
}
}
Каждый раз, когда модифицируется грань, я вижу результат с свалка()
и все в порядке. Возможно, это не правильный хук в моем случае, но он возвращает то, что я ожидаю.
Однако я не знаю, как передать результат этого хука в мою настраиваемую форму, которая вставляется в настраиваемый блок на странице с представлением результатов фасетов.
Когда пользователь отправляет форму, мне нужно знать, что хук ранее возвращал в SendSearchForm()
публичная функция submitForm (массив и $ форма, FormStateInterface $ form_state) {
// адрес электронной почты, введенный пользователем
$email = $form_state->getValue('email');
// отправить электронное письмо, но необходимо также отправить результаты my_module_preprocess_views_view__VIEW_ID
$this->sendEmail($email, $facets_result);
}
У вас есть предложение сделать это правильно с Drupal?
РЕДАКТИРОВАТЬ: я видел, чем мог бы воспользоваться функция drupal_static
. Это хорошая идея ?