mfilter -фильтрация из своей таблицы?
        Доброго дня сообщество. Уже который раз изобретаю велосипеды с фильтрацией данных, и который раз смотрю в сторону такого замечательного компонента как mfilter. Суть в чем, как правило моя работа не выходит за рамки создания некой таблицы, с данными. И вывод этих данных на какой то странице, обычным сниппетом, используя не менее обычный PDO. А есть ли способ заставить mfilter выбирать и фильтровать данные? Так, как будто это были бы ресурсы. Или же проще данные складывать не в собственно созданные таблички, а в site_content?    
    
    
                                                                                
            Комментарии: 13
                Можно фильтровать что угодно.            
                    
                С 3го подхода я пытаюсь усвоить информацию, и написать свои методы фильтрации. Делая фильтрацию по обычным ресурсам, мы в вызове mFilter пишем &parents=`30`. Делая свою фильтрацию, получается подобные параметры мне не нужны? Я просто пишу свой get*Values в котором выбираю данные так как мне нужно? А если я хотел бы передать из вызова mFilter что то, например &type=`1`, то как получить доступ в классе к параметру? Или я не так все понял?            
                    
                Эти параметры передаются в вызываемый сниппет, а он возвращает id подходящих ресурсов, которые ты дальше видишь почти во всех методах.
Получить эти параметры в классе фильтрации можно через $this->config, например:
                    Получить эти параметры в классе фильтрации можно через $this->config, например:
$this->config['parents'];            
                К слову, getResourceValues получает ресурсы по массиву $ids, но в вызове указывается &parents=`30`. Где то есть функция прослойка, которая обрабатывает параметры вызова, и передает их в класс?            
                    
                И такой момент. Выборка данных и отправка в чанк как осуществляется? У нас есть 3 метода:
1. Получение информации для фильтрации.
Его можно не переопределять, как я понял. Метод default произведет фильтрацию.
Но что из всего этого выведет данные из базы? На всех 3 методах максимум что мы знаем о выводимых данных — id, но нигде нету вывода данных и отправки в чанк.
                    1. Получение информации для фильтрации.
Array (
    [ИмяПоля 1] => array(
        [Значение1] => array(
            [0] => id подходящего ресурса
            [1] => id подходящего ресурса
            [2] => id подходящего ресурса
        ),
    ),
)2. Приготовление фильтров для выводаArray (
    [ИмяФильтра] => Array (
        [title] => ИмяФильтра
        [value] => значение позиции фильтра
        [type] => необязательное поле с типом фильтра
        [resources] => Array (
            [0] => id подходящего ресурса
            [1] => id подходящего ресурса
            [2] => id подходящего ресурса
        )
    )
)3. проведение фильтрации по параметруЕго можно не переопределять, как я понял. Метод default произведет фильтрацию.
Но что из всего этого выведет данные из базы? На всех 3 методах максимум что мы знаем о выводимых данных — id, но нигде нету вывода данных и отправки в чанк.
                Выводом данных занимается сниппет, указанный в &element.
По умолчанию там mSearch2, но часто используются pdoResources или msProducts.
                    По умолчанию там mSearch2, но часто используются pdoResources или msProducts.
                Получается я указываю свой сниппет в element, а в нем делаю return $modx->getChunk(); с данными. Тогда наверное последний вопрос, а в моем сниппете, мне как и какие данные ждать? Я ранее пытался из сниппета передавать массив в сниппет, но не получалось. Общался через json.            
                    
                Используй pdoResources — он умеет выбирать данные из любых таблиц.            
                    
                Внимательно перечитал информацию и не смог найти ничего, что указывало бы на возможность вывода информации из собственных таблиц. Нужно же как то ему сказать, что данные для выборки находятся в таблице user_pages. 
Фактический должно получиться что то вроде этого?
                    Фактический должно получиться что то вроде этого?
[[!mFilter2? 
    &tpls=`tpl.page` 
    &filters=`pages|status`
    &element=`pdoResources`
/// тут какой то параметр, для pdoResourses явно указывающий табличку user_pages
]]            
                docs.modx.pro/components/pdotools/general-settings — параметры &class и &loadModels            
                    
                Кажется я осознаю свою ошибку. Я не полностью предоставил информацию. В моем случае имеется табличка user_pages, которая буквально 2-3 строчками PDO запросов из обычного сниппета наполняется. Соответственно у меня нету своих моделей и классов. Без этого у меня не выйдет делать фильтрацию?            
                    
                Через pdoTools — не выйдет.
Тогда нужно писать свой сниппет, наверное, который будет корректно реагировать на передаваемые из mFilter2 параметры, типа sortby, parents, returnIds и еще не знаю какие — нужно смотреть исходник.
Например, там есть вот такие места:
Наверное, проще будет создать свою модель как положено.
                    Тогда нужно писать свой сниппет, наверное, который будет корректно реагировать на передаваемые из mFilter2 параметры, типа sortby, parents, returnIds и еще не знаю какие — нужно смотреть исходник.
Например, там есть вот такие места:
if (!empty($ids)) {
	$tmp = $scriptProperties;
	$tmp['returnIds'] = 1;
	$tmp['resources'] = implode(',', $ids);
	$tmp['parents'] = $scriptProperties['parents'];
	$tmp['limit'] = 0;
	$ids = explode(',', $modx->runSnippet($scriptProperties['element'], $tmp));
	$pdoFetch->addTime('Found ids: "'.implode(',',$ids).'"');
}Это проверка ресурсов, которые сниппет может вывести.Наверное, проще будет создать свою модель как положено.
                Спасибо! В какую сторону копать я допер.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.