Score:0

ส่ง hook preprocess_views_view ผลลัพธ์ไปยังแบบฟอร์มหรือบริการที่กำหนดเอง

ธง pe

ฉันกำลังพัฒนาคุณลักษณะที่ช่วยให้ผู้ใช้ที่ไม่ระบุตัวตนสามารถรับผลลัพธ์ของ แง่มุม + ค้นหา 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. เป็นความคิดที่ดีหรือไม่?

Kevin avatar
in flag
นี่ไม่ใช่สิ่งที่ preprocess hooks มีไว้สำหรับ (การโทรและการสื่อสารกับฟังก์ชัน/วิธีการอื่นๆ) สิ่งที่คุณทำได้คือตั้งค่าตัวแปรกำหนดค่าหรือรายการแคชเพื่อจัดเก็บสิ่งนี้ แต่มักจะไม่ถูกต้อง 100% เนื่องจากคุณไม่มีวิธีมากมายในการบอกผู้ใช้ที่ไม่ระบุตัวตนคนหนึ่งจากอีกคนหนึ่ง อาจเก็บไว้ใน user temp store .. ไม่แน่ใจ
pe flag
@เควิน ขอบคุณสำหรับความคิดเห็นของคุณ แท้จริงแล้วฉันยังตระหนักดีว่าไม่ได้ขอสิ่งนั้น เนื่องจากเบ็ดกลับมาตรงตามที่ฉันต้องการ ฉันจึงพยายามใช้มัน แต่ฉันต้องคิดอย่างอื่น อาจเรียกใช้การค้นหาโดยผู้ใช้โดยทางโปรแกรมโดยการดึงพารามิเตอร์ ณ เวลาที่ส่งแบบฟอร์ม
pe flag
@Kevin ฉันสามารถทำสิ่งที่ต้องการได้โดยการดึงส่วนที่เลือกในจาวาสคริปต์ ฉันคิดว่าฉันจะลบคำถามเพราะหัวข้อไม่เกี่ยวข้องอีกต่อไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา