Điểm:0

Tạo bộ lọc chế độ xem để tìm nút không có giá trị trong một trường cụ thể

lá cờ ru

Tôi đang cố gắng tạo bộ lọc hiển thị cho chế độ xem cho phép tìm nút có trường cụ thể không có giá trị. Đó là một trường liệt kê các thuật ngữ phân loại.

Điều này là không thể với chế độ xem. Khi tôi chọn hiển thị toán tử "IS NULL", bộ lọc được trả về theo chế độ xem sẽ không có ý nghĩa gì như bạn có thể thấy trên các hình ảnh sau

nhập mô tả hình ảnh ở đây

Bộ lọc sau khi tôi chọn tùy chọn này:

nhập mô tả hình ảnh ở đây

Trong một vấn đề khác trên stackexchange, ai đó đề xuất sử dụng bộ lọc tiếp xúc tốt hơn và một số người chấp thuận. Nhưng có thể do sự cố xảy ra với Drupal 7 hoặc một loại trường khác nên tùy chọn này không khả dụng với mô-đun cho trường của tôi.

Tôi tạo bộ lọc tùy chỉnh hiển thị hộp kiểm trong bộ lọc sửa đổi truy vấn để hiển thị nội dung có trường này trống nếu chọn.

Với EntityQuery, tôi biết có thể tạo truy vấn trả về các thực thể có trường trống với hàm notExist trên trường.

Nhưng trong trường hợp truy vấn để xem, tôi không biết làm cách nào để chỉ ra rằng tôi muốn nội dung không có kết nối trong trường này. Tôi đoán tôi có thể có cái này với một lựa chọn phụ trong truy vấn nhưng tôi không biết cách xây dựng nó.

Điểm:0
lá cờ ru

Vì vậy, cuối cùng tôi đã tìm ra cách thực hiện với phép nối trái và xác minh xem nó có rỗng hay không tùy thuộc vào giá trị của hộp kiểm (nếu được chọn, nên điền; nếu không, nên để trống). Đây là bộ lọc của tôi:

<?php

không gian tên Drupal\my_module\Plugin\views\filter;

sử dụng Drupal\Core\Database\Query\Condition;
sử dụng Drupal\views\Plugin\views\filter\BooleanOperator;
sử dụng Drupal\views\Views;

/**
 * Bộ lọc để phát hiện xem nội dung có thuật ngữ phân loại được thông báo trong field_tags hay không.
 *
 * @ingroup lượt xem_filter_handlers
 *
 * @ViewsFilter("has_tags_filter")
 */
lớp HasTagFilter mở rộng BooleanOperator {

  /**
   * Hàm trợ giúp xây dựng truy vấn.
   */
  truy vấn hàm công khai() {
    $cấu hình = [
      'bảng' => 'node__field_tags',
      'trường' => 'entity_id',
      'left_table' => 'node_field_data',
      'left_field' => 'không',
      'toán tử' => '=',
    ];
    $join = Lượt xem::pluginManager('join')->createInstance('chuẩn', $configuration);
    $this->query->addRelationship('node__field_tags', $join, 'node_field_data');

    nếu ($this->value == 1) {
      $this->query->addWhere('AND', 'node__field_tags.field_tags_target_id', '', 'KHÔNG LÀ NULL');
    } khác {
      $this->query->addWhere('AND', 'node__field_tags.field_tags_target_id', '', 'IS NULL');
    }
  }
}
Điểm:0
lá cờ fr
  1. Chuyển đến chế độ xem
  2. Thêm bộ lọc cho "Thẻ (field_tags)"
  3. Chọn toán tử "Trống (NULL)"

Bây giờ chỉ các nút không có thẻ mới hiển thị

lá cờ ru
Nó không rõ ràng trong bài đăng đầu tiên của tôi nhưng thực tế bộ lọc của tôi đã bị lộ nên thật đáng buồn là nó không đơn giản như vậy
hoanns avatar
lá cờ fr
Vì vậy, bạn không thể hiển thị toán tử "Trống rỗng (NULL)" sao? và để người dùng chọn nó? Hay tôi không nhận được một cái gì đó
lá cờ ru
Không, đó là hiển thị trường văn bản hoặc danh sách thuật ngữ không có ý nghĩa đối với UX.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.