ฉันกำลังพยายามสร้างบันทึกการค้นหาที่ทำผ่านบล็อกแบบฟอร์มที่เปิดเผย Search API View ใน Drupal 9
ด้วยเหตุผลบางอย่างในการค้นหาใหม่ ฉันได้รับข้อมูลที่ซ้ำกัน 2 รายการ (ทั้งหมด 3 รายการ) และดูเหมือนว่าฉันจำได้ว่าเคยอ่านที่ไหนสักแห่งที่สามารถส่งแบบฟอร์มได้หลายครั้ง เลยอยากทราบว่าจะกำจัดมันได้อย่างไร
อัปเดต: นี่เป็นปัญหาสำหรับ Drupal 7
https://www.drupal.org/project/views/issues/2088549
นอกจากนี้ ในการค้นหาคำหลักที่ให้ผลลัพธ์เป็น "ไม่มีผลลัพธ์" ฉันไม่เห็นรายการในบันทึก ลักษณะการทำงานนี้ดูเหมือนจะถูกและพลาด ฉันใช้รหัสต่อไปนี้ด้วยความสำเร็จที่จำกัด:
/**
* ใช้ hook_form_views_exposed_form_alter()
*/
ฟังก์ชัน MY_form_views_exposed_form_alter(&$form, FormStateInterface &$form_state, $form_id) {
// สร้างฟังก์ชั่นการส่ง search_log สำหรับ watchdog
$view_names = array('search_api_view');
$view = $form_state->getStorage('ดู');
ถ้า ($form_id == 'views_exposed_form' && in_array($view['view']->id(), $view_names)) {
ถ้า ($form['#id'] == 'views-exposed-form-search-api-view-page-1') {
$form['#submit'][] = 'MY_search_api_log';
}
}
}
ฟังก์ชัน MY_search_api_log(&$form, FormStateInterface $form_state) {
ถ้า ($form_state->getValue('search_api_fulltext') != "") {
// สร้างลิงค์
$link = Url::fromRoute('view.search_api_view.page_1', [], ['query' => ['search_api_fulltext' => $form_state->getValue('search_api_fulltext'), ], ]);
// บันทึกการส่ง
\Drupal::logger('search_api_results')->info($form_state->getValue('search_api_fulltext'), ['link' => Link::fromTextAndUrl('results', $link)->toString()]) ;
}
}
ฉันกำลังพยายามแปลงฟังก์ชันนี้จาก hook ที่ฉันใช้ใน D7 ซึ่งใช้งานได้ดี:
/**
* ใช้ hook_form_views_exposed_form_alter()
*/
ฟังก์ชัน MY_form_views_exposed_form_alter(&$form, &$form_state, $form_id) {
// สร้างฟังก์ชั่นการส่ง search_log สำหรับ watchdog
ถ้า($form_state["view"]->base_field == 'search_api_id') {
$form['#submit'][] = 'MY_search_api_log';
}
}
ฟังก์ชัน MY_search_api_log(&$form, $form_state) {
ถ้า ($form_state['values']['search_api_views_fulltext'] != "") {
$link = l('results', '/search-results', ['query' => ['search_api_views_fulltext' => $form_state['values']['search_api_views_fulltext'], ], ]);
watchdog('search_api_results', $form_state['values']['search_api_views_fulltext'], [], WATCHDOG_INFO, $link);
}
}