Выборка статей для юзера

Добрый день. на сайте установлен компонент Login. Настроена авторизация.
Админ создает ресурс Проекты. И в это папке будут создаваться разные страницы.
админ пишет статью и в доп.поле указывет того юзера которому эта страница/статья должно показываеться. Это доп.поле с типом одиночный выбор и выборкой
@SELECT `username` AS `name`,`id` FROM `[[+PREFIX]]users` WHERE `active` = 1

В личном кабинете пользователя есть ссылка на ресурс «Проекты». Сам ресурс содержит код
[[pdoResources?
    &parents=`[[*id]]`
    &depth=`1`
    &tpl=`project.tpl`
    &includeContent=`1`
    &includeTVs=`adres,cost,date-cost,dogovor,kloset,material,remont,square,userz`
    &prepareTVs=`userz`
    &prepareTVs=`userz`
    &tvFilters=`userz==[[!+modx.user.id]]`
]]
Так вот, нужно чтобы пользователю были доступны только те «подресурсы», в которых он указан в тв — userz
Как я понимаю нужно фильтровать, но возможно фильтрую не так :) Потомучто не выводится вообще ничего. Подскажите как правильно отфильтровать данное действие

вот лог работы
0.0001509: pdoTools loaded
0.0000391: xPDO query object created
0.0000620: Added TVs filters
0.0006170: Included list of tvs: dogovor, remont, square, kloset, material, adres, cost, date-cost, userz
0.0002282: leftJoined modTemplateVarResource as TVdogovor
0.0001760: leftJoined modTemplateVarResource as TVremont
0.0001719: leftJoined modTemplateVarResource as TVsquare
0.0001671: leftJoined modTemplateVarResource as TVkloset
0.0001709: leftJoined modTemplateVarResource as TVmaterial
0.0001659: leftJoined modTemplateVarResource as TVadres
0.0001681: leftJoined modTemplateVarResource as TVcost
0.0001659: leftJoined modTemplateVarResource as TVdate-cost
0.0001662: leftJoined modTemplateVarResource as TVuserz
0.0008881: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000122: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.dogovor`
0.0000081: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.remont`
0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.square`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.kloset`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.material`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.adres`
0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.cost`
0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.date-cost`
0.0000060: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.userz`
0.0000770: Replaced TV conditions
0.0016592: Processed additional conditions
0.0020020: Added where condition: 0=`TVuserz`.`value` LIKE '2', modResource.parent:IN(15,16), modResource.published=1, modResource.deleted=0
0.0000472: Replaced TV conditions
0.0001352: Sorted by modResource.publishedon, DESC
0.0000041: Limited to 10, offset 0
0.0003169: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVdogovor`.`value`, '') AS `tv.dogovor`, IFNULL(`TVremont`.`value`, '') AS `tv.remont`, IFNULL(`TVsquare`.`value`, '') AS `tv.square`, IFNULL(`TVkloset`.`value`, '') AS `tv.kloset`, IFNULL(`TVmaterial`.`value`, '') AS `tv.material`, IFNULL(`TVadres`.`value`, '') AS `tv.adres`, IFNULL(`TVcost`.`value`, '') AS `tv.cost`, IFNULL(`TVdate-cost`.`value`, '') AS `tv.date-cost`, IFNULL(`TVuserz`.`value`, '') AS `tv.userz` FROM `modx2_site_content` AS `modResource` LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVdogovor` ON `TVdogovor`.`contentid` = `modResource`.`id` AND `TVdogovor`.`tmplvarid` = 3 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVremont` ON `TVremont`.`contentid` = `modResource`.`id` AND `TVremont`.`tmplvarid` = 4 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVsquare` ON `TVsquare`.`contentid` = `modResource`.`id` AND `TVsquare`.`tmplvarid` = 5 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVkloset` ON `TVkloset`.`contentid` = `modResource`.`id` AND `TVkloset`.`tmplvarid` = 6 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVmaterial` ON `TVmaterial`.`contentid` = `modResource`.`id` AND `TVmaterial`.`tmplvarid` = 7 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVadres` ON `TVadres`.`contentid` = `modResource`.`id` AND `TVadres`.`tmplvarid` = 8 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVcost` ON `TVcost`.`contentid` = `modResource`.`id` AND `TVcost`.`tmplvarid` = 9 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVdate-cost` ON `TVdate-cost`.`contentid` = `modResource`.`id` AND `TVdate-cost`.`tmplvarid` = 10 LEFT JOIN `modx2_site_tmplvar_contentvalues` `TVuserz` ON `TVuserz`.`contentid` = `modResource`.`id` AND `TVuserz`.`tmplvarid` = 11 WHERE  ( `TVuserz`.`value` LIKE '2' AND `modResource`.`parent` IN (15,16) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "
0.0033572: SQL executed
0.0000770: Total rows: 0
0.0000091: Rows fetched
0.0000291: Prepared and processed TVs
0.0000050: Returning processed chunks
0.0095630: Total time
5 505 024: Memory usage
Sergey
31 мая 2016, 09:32
modx.pro
1
1 231
0

Комментарии: 15

Захарий
31 мая 2016, 14:38
0
В pdoResources 1.4.1 Василий писал, что пока не реализовал tvFilters, для перехода с getResource. Возможно так и не было реализовано, попробуй через
&where=`{"userz:=":"[[!+modx.user.id]]"}`
Приставку TV указывать, вроде, как не надо.
    Sergey
    31 мая 2016, 15:06
    0
    К сожалению так тоже не работает :(
      Захарий
      31 мая 2016, 15:14
      0
      Если тестовый сервер киньте доступы, интересно будет глянуть. Ну или сам уже вечером попробую у себя
    Евгений Webinmd
    31 мая 2016, 17:27
    +2
    &where=`{"userz":"[[!+modx.user.id]]"}`
      Sergey
      01 июня 2016, 11:15
      0
      Нет, к сожалению так тоже не работает. Может ест ькакой-то другой способ решить эту задачку?
        Евгений Webinmd
        01 июня 2016, 11:20
        0
        проверьте если вместо [[!+modx.user.id]] подставить id конкретного юзера, у которого точно есть материалы.

        Можно еще что-то типа такого использовать
        &where=`[" TVuserz = [[+modx.user.id]]"]`
        Но тут не помню нужен ли префикс TV
          Sergey
          01 июня 2016, 12:17
          0
          если поставить точно id то данный материал отображается, но его видят все, а не только тот юзер, для которого он как бы должен быть открыт… это нормально? :)
            Евгений Webinmd
            01 июня 2016, 12:19
            0
            а в [[+modx.user.id]] точно попадает id юзера с материалами?
              Sergey
              01 июня 2016, 12:31
              0
              А как это проверить?

              PS: Евгений, может быть я скину доступ, вы гляните профессиональным взглядом? на попытки неуча )))
                Евгений Webinmd
                01 июня 2016, 12:51
                0
                ну вы авторизуетесь из другого браузера под нужным юзером и проверяете что выводится на месте [[+modx.user.id]]
                Можете скинуть доступы, посмотрю что там у вас не так
                  Sergey
                  01 июня 2016, 18:54
                  0
                  Евгений, спасибо за помощь. Все заработало. Все дело в кэше :) Поставил некэшируемый вызов сниппета, и на всякий случай убрал галочку с ресурса про кэш. И все залетало!
                  Еще раз спасибо!
      Василий Столейков
      01 июня 2016, 13:53
      1
      0
      У меня вопрос, а как к следующему выводу в TV списке пользователей добавить первый селект с пустым значением:
      доп.поле с типом одиночный выбор и выборкой
      @SELECT `username` AS `name`,`id` FROM `[[+PREFIX]]users` WHERE `active` = 1
      Такой вариант не срабатывает:
      Укажите пользователя==||@SELECT `username` AS `name`,`id` FROM `modx_users` WHERE `active` = 1 AND `id` != 1
      В таком случае выводит первый пункт «Укажите пользователя», а вторым пунктом выводит голый код @SELECT…

      Ведь по умолчанию подставляется первый пользователь из списка, а если не нужно к этой странице прикреплять пользователя, то при сохранении в тв попадёт первый выбранный пользователь, а не пустое значение…
        Василий Столейков
        01 июня 2016, 13:56
        1
        0
        Разве что переделать тип ТВ на чекбокс, тогда по умолчанию ничего не будет указано, но если пользователей +100500, то получится неудобоваримая каша…
          Василий Столейков
          01 июня 2016, 14:03
          0
          Нашел в доках ответ на свой вопрос… ))

          Вот ответ:
          @SELECT '- Выберите пользователя -' AS username, 0 AS id UNION ALL 
          SELECT `username` AS `name`,`id` FROM `modx_users` WHERE `active` = 1
            Евгений Webinmd
            01 июня 2016, 14:05
            0
            Я ужк точно не помню какие там параметры, но можно использовать что-то типа такого с использованием tpl
            ||[[+id]]==[[+name]]


            Если поставить эти две палки в начале, то получится что первый пункт пустой

            @EVAL $modx->runSnippet('pdoUsers', array('active'=>1))
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            15