Фильтрация ресурсов по tv параметру pdoResources

Здраствуйте,
Необходимо показать те ресурсы в tv поле которых указан id авторизованного пользователя

Есть tv поле в ресурсах — users
Есть Ajax авторизация пользователя Login
Есть ajax вызов pdoRecources c помошью ajaxSnippet

[[AjaxSnippet?
    &snippet=`pdoResources`
    &parents=`7`
    &includeTVs=`users`
    &tpl=`@INLINE [[+link]] [[+modx.user.id]]`
    &useWeblinkUrl=`1`
    &as_mode=`onclick`
    ]]
При успешной авторизации срабатывает триггер на кнопку показа ресурсов, если не ставить фильтрацию то все работает:
выводится ссылка и id авторизованного пользователя
если я ставлю условие:
&tvFilters=`users==[[+modx.user.id]]
то условие не всегда срабатывает, если ставлю условие
&where=`{"users:=":"[[+modx.user.id]]"}`
вообще ничего не выводится…

суть вот в чем, есть несколько ресурсов и несколько пользователей, у каждого пользователя должен быть доступ к одному ресурсу, это можно реализовать через группы, но тогда добавлять ресурсы и пользователей слишком сложно. Помогите пожалуйста разобраться во всем этом.

Весь день промучался и так не смог найти и сделать так чтобы работало

сейчас сделал

<[[!AjaxSnippet?
    &snippet=`pdoResources`
    &parents=`7`
    &includeTVs=`users`                 
    &tvFilters=`users=={$_modx->user.id}` 
    &tpl=`@INLINE [[+link]]`
    &useWeblinkUrl=`1`
    &as_mode=`onclick`
    ]]
Не выводит ничего в то время как
[[!pdoResources?
    &parents=`7`
    &includeTVs=`users`                 
    &tvFilters=`users=={$_modx->user.id}` 
    &tpl=`@INLINE [[+link]]`
    &useWeblinkUrl=`1`
    &as_mode=`onclick`
    ]]
выводит правильную ссылку. Видимо проблема в том что не успевает смениться user.id его можно как-то ajaxом запросить?
Вячеслав Варов
18 июня 2018, 16:59
modx.pro
1 592
0

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

Илья Уткин
19 июня 2018, 07:25
0
В AjaxSnippet параметры сохраняются в кеш во время первой загрузки страницы. После этого, когда происходит сам Ajax-запрос, параметры уже не доступны для изменения.

Вам надо написать собственный сниппет-обёртку, например, такую: modx.pro/development/3139/

И уже в этом сниппете вызывать $modx->runSnippet(). Тогда легко можно будет подставить id только что авторизовавшегося пользователя.
    Вячеслав Варов
    19 июня 2018, 13:35
    0
    Спасибо, разобрался с запуском сниппета, теперь не получается вывести ресурсы с фильтрацией по тв полю, как правильно составить where запрос в сниппете?
    Вячеслав Варов
    19 июня 2018, 13:40
    0
    Может есть инструкция где по составлению этих запросов
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5