Рейтинг:0

Отправлять результаты хука preprocess_views_view в пользовательскую форму или службы

флаг pe

Я разрабатываю функцию, которая позволяет анонимным пользователям получать по электронной почте результат грани + поиск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. Это хорошая идея ?

Kevin avatar
флаг in
Это не то, для чего предназначены хуки предварительной обработки (вызов и связь с другими функциями/методами). Все, что вы можете сделать, это установить переменную конфигурации или элемент кэша для хранения этого, но это, вероятно, не будет точным в 100% случаев, потому что у вас не так много способов отличить одного анонимного пользователя от другого. Может быть, хранить его в пользовательском временном хранилище ... не уверен.
флаг pe
@Кевин Спасибо за ваш комментарий. Ведь я тоже понимаю, что крючки не для того. Поскольку хук вернул именно то, что я хотел, я попытался его использовать, но мне нужно придумать что-то еще. Возможно, программно запустить поиск, выполняемый пользователем, путем получения параметров во время отправки формы.
флаг pe
@Kevin Мне удалось сделать то, что я хотел, выбрав выбор в javascript. Думаю удалю вопрос так как тема уже не актуальна.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.