ฉันกำลังพัฒนาคุณลักษณะที่ช่วยให้ผู้ใช้ที่ไม่ระบุตัวตนสามารถรับผลลัพธ์ของ แง่มุม + ค้นหา API.
Facets และ Search API ทำงานได้อย่างสมบูรณ์ โมดูลแบบกำหนดเองที่อนุญาตให้ส่งอีเมลด้วย ฉันได้สร้างแบบฟอร์มที่กำหนดเอง (FormAPi) เพื่อให้ผู้ใช้ส่งเมลและส่งข้อมูลเมื่อส่ง
เพื่อให้ได้ผลลัพธ์ของการค้นหา facets ฉันใช้ preprocess_views_view
ใน .โมดูล
ไฟล์
ฟังก์ชัน my_module_preprocess_views_view__VIEW_ID (อาร์เรย์ &$ ตัวแปร): โมฆะ {
foreach ($variables['view']->result as $result) {
$node = $result->_object->getEntity();
$title = $node->get('title')->getValue()[0]['value'];
$custom_field = $node->get('custom_field')->getValue()[0]['value'];
}
}
ทุกครั้งที่มีการแก้ไข facet ฉันจะเห็นผลลัพธ์ด้วย a การถ่ายโอนข้อมูล ()
และทุกอย่างก็โอเค บางทีนี่อาจไม่ใช่ตะขอที่ถูกต้องในกรณีของฉัน แต่มันจะส่งคืนสิ่งที่ฉันคาดหวัง
อย่างไรก็ตาม ฉันไม่รู้ว่าจะส่งผลลัพธ์ของ hook นี้ไปยังแบบฟอร์มที่กำหนดเองของฉันได้อย่างไร ซึ่งถูกแทรกในบล็อกที่กำหนดเองบนหน้าที่มีมุมมองผลลัพธ์ของ facets
เมื่อผู้ใช้ส่งแบบฟอร์ม ฉันจำเป็นต้องทราบว่า hook ใดที่ส่งคืนใน SendSearchForm() ก่อนหน้านี้
ฟังก์ชันสาธารณะ submitForm (อาร์เรย์ &$form, FormStateInterface $form_state) {
// อีเมลที่ป้อนโดยผู้ใช้
$email = $form_state->getValue('อีเมล');
// ส่งอีเมล แต่ต้องส่งผลลัพธ์ my_module_preprocess_views_view__VIEW_ID ด้วย
$this->sendEmail($email, $facets_result);
}
คุณมีคำแนะนำให้ทำอย่างถูกต้องกับ Drupal หรือไม่?
แก้ไข: ฉันเคยเห็นกว่าที่ฉันสามารถใช้ ฟังก์ชัน drupal_static
. เป็นความคิดที่ดีหรือไม่?