Я использую серверный скрипт Datatables для заполнения 9 фильтров YADCF, и он хорошо работает. Что мне нужно сделать, так это использовать cumulative_filtering, но я не могу найти никаких примеров того, как я могу использовать кумулятивную фильтрацию на стороне сервера и как может выглядеть «кумулятивная логика». Очевидно, мне нужно, чтобы фильтры обновлялись / перезагружались, когда значение выбирается из одного из них. Часть моего текущего серверного скрипта выглядит так:
$ data ['yadcf_data_6'] = $ db -> selectDistinct ("table_name", ["type as value, type as label"], null, "type") -> fetchAll ();
Мой JS выглядит так:
// YADCF filters Modal
$(document).ready(function () {
'use strict';
var oTable;
oTable = $('#table').DataTable();
yadcf.init(oTable,
[{
column_number: 6,
filter_container_id: 'searchtype',
filter_type: "select",
filter_reset_button_text: "Clear",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Type'
},
{
column_number: 7,
filter_container_id: 'searchcategory',
filter_type: "select",
filter_reset_button_text: "Clear",
sort_as: "alpha",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Category'
},
{
column_number: 8,
filter_container_id: 'searchmaterial',
filter_type: "select",
filter_reset_button_text: "Clear",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Material'
},
{
column_number: 9,
filter_container_id: 'searchgrade',
filter_type: "select",
filter_reset_button_text: "Clear",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Grade'
},
{
column_number: 10,
filter_container_id: 'searchshape',
filter_type: "select",
filter_reset_button_text: "Clear",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Shape'
},
{
column_number: 11,
filter_container_id: 'searchcut',
filter_type: "select",
filter_reset_button_text: "Clear",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Cut'
},
{
column_number: 12,
filter_container_id: 'searchsize',
filter_type: "text",
filter_reset_button_text: "Clear",
select_type: "chosen",
filter_match_mode: 'exact',
select_type_options: {
'width': '50em',
},
filter_default_label: 'Size'
},
{
column_number: 29,
filter_container_id: 'searchpairs',
filter_type: "select",
filter_reset_button_text: "Clear",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Pairs'
},
{
column_number: 31,
filter_container_id: 'searchset',
filter_type: "select",
filter_reset_button_text: "Clear",
select_type: "chosen",
select_type_options: {
'width': '50em',
},
filter_default_label: 'Sets'
}
],
{
cumulative_filtering: true
}
);
});
Есть ли какой-нибудь пример кода, на который кто-нибудь может указать (я не могу его найти, я нашел и использовал код на стороне клиента здесь), или, если нет, может кто-нибудь дать мне несколько подсказок, с чего начать?





Логика следующая
1) Каждый раз, когда вы используете фильтр, на сервер отправляется запрос.
2) На основе этого запроса вы должны запросить свою БД
3) Затем на основе результата запроса вы должны получить несколько строк данных
4) На основе этих строк вы должны заполнить ваши текущие элементы фильтров из этого результата запроса (в отличие от сценария без cumulative_filtering, в котором вы заполняете элементы фильтров из всего набора данных, присутствующего в БД)