ฉันกำลังพยายามสร้างปลั๊กอินฟิลด์มุมมองที่มีฟังก์ชันเพิ่มเติมบางอย่างให้กับฟิลด์สำหรับฉัน ฉันมีปัญหากับมัน
ฉันมีประเภทเอนทิตีที่เรียกว่า lms_request มันมีชุดมากมายอยู่ข้างใน
เมื่อใช้ 'ปลั๊กอินฟิลด์มุมมอง' ที่กำหนดเองในมุมมองที่กรองบันเดิลเดียวโดยเฉพาะ มันจะทำงานได้ดี
เมื่อฉันพยายามใช้ฟิลด์เดียวกันบนมุมมองที่มีการกรองบันเดิลหลายชุด หรือไม่มีการกรองบันเดิลเลย (เพื่อแสดงทั้งหมด) ระบบจะแสดงข้อผิดพลาดที่ขัดขวางไม่ให้ฉันแสดงมุมมอง ข้อผิดพลาดที่พ่นออกมาคือ:
ประกาศ: ดัชนีที่ไม่ได้กำหนด: แก้ไขใน Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender()
เช่นเดียวกับ ข้อผิดพลาด: ประเภทตัวถูกดำเนินการที่ไม่รองรับใน Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender()
ถ้าฉันเข้าไปในคำนิยามปลั๊กอินของฟิลด์และตั้งค่าการแทนที่ กำหนดตัวเลือก
ฟังก์ชั่นสาธารณะ กำหนดตัวเลือก () {
ส่งคืนพาเรนต์::defineOptions();
}
ฉันได้รับสิ่งต่อไปนี้ใน dblog (3 ครั้ง)
ประกาศ: พยายามเข้าถึงอาร์เรย์ออฟเซ็ตตามค่าประเภท null ใน Drupal\views\Plugin\views\field\FieldPluginBase->defineOptions()
ฉันสับสนว่าทำไมเมื่อกรองชุดรวมเดียวจึงทำงานได้ตามที่คาดไว้ แต่ทันทีที่ฉันเอาตัวกรองออกหรือตั้งค่าตัวกรองเป็นชุดหลายชุด ฟิลด์จะหยุดทำงาน
hook_views_data() ของฉันมีลักษณะดังนี้:
ฟังก์ชัน lms_request_views_data() {
$data['lms_request']['request_system_quick_edit'] = [
'title' => t('คำขอแก้ไขด่วน'),
'help' => t('แบบฟอร์มคำขอแก้ไขด่วน'),
'ฟิลด์' => [
'id' => 'request_system_quick_edit',
]
];
ส่งคืน $data;
}
โดยที่ 'request_system_quick_edit' คือชื่อของปลั๊กอินฟิลด์ที่กำหนดเองที่ฉันสร้างขึ้น
รหัสปลั๊กอินฟิลด์มีลักษณะดังนี้:
<?php
เนมสเปซ Drupal\request_system\Plugin\views\field;
ใช้ Drupal\views\Plugin\views\field\FieldPluginBase;
ใช้ Drupal\views\ResultRow;
ใช้ Drupal\Core\Form\FormStateInterface;
ใช้ Drupal\Core\Url;
/**
* ให้ตัวจัดการฟิลด์แก้ไขด่วน
*
* @ViewsField("request_system_quick_edit")
*
*@ดีซีจี
* ต้องกำหนดปลั๊กอินให้กับคอลัมน์ตารางเฉพาะผ่าน
* hook_views_data() หรือ hook_views_data_alter()
* สำหรับคอลัมน์ที่ไม่มีอยู่จริง (เช่น ฟิลด์ที่คำนวณ) คุณต้องแทนที่
* วิธี self::query()
*/
คลาส QuickEdit ขยาย FieldPluginBase {
$storage ที่มีการป้องกัน;
ป้องกัน $taxonomy;
ป้องกัน $library_item;
/**
* {@inheritdoc}
*/
ฟังก์ชั่นสาธารณะ __construct () {
$this->storage = \Drupal::entityTypeManager()->getStorage('lms_request');
$this->taxonomy = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
$this->library_item = \Drupal::entityTypeManager()->getStorage('item_type');
}
/**
* {@inheritdoc}
*/
แบบสอบถามฟังก์ชันสาธารณะ () {
}
// /**
// * {@inheritdoc}
// */
ฟังก์ชันที่ได้รับการป้องกันdefinitionOptions() {
พาเรนต์::defineOptions();
}
// /**
// * {@inheritdoc}
// */
ฟังก์ชันสาธารณะ buildOptionsForm (&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
ฟังก์ชั่นสาธารณะแสดงผล (ResultRow $values) {
$build['output']['#markup'] = 'ทดสอบ';
ส่งคืน $build;
}
}
นอกจากนี้ เมื่อเพิ่มฟิลด์ ป้ายกำกับและกลุ่มจะแสดงอย่างถูกต้อง แต่เมื่อฟิลด์อยู่ในมุมมอง จะแสดง :
แทน กลุ่ม:ชื่อฟิลด์
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.