Фильтрация ресурсов по tv параметру pdoResources
Здраствуйте,
Необходимо показать те ресурсы в tv поле которых указан id авторизованного пользователя
Есть tv поле в ресурсах — users
Есть Ajax авторизация пользователя Login
Есть ajax вызов pdoRecources c помошью ajaxSnippet
выводится ссылка и id авторизованного пользователя
если я ставлю условие:
суть вот в чем, есть несколько ресурсов и несколько пользователей, у каждого пользователя должен быть доступ к одному ресурсу, это можно реализовать через группы, но тогда добавлять ресурсы и пользователей слишком сложно. Помогите пожалуйста разобраться во всем этом.
Весь день промучался и так не смог найти и сделать так чтобы работало
сейчас сделал
Необходимо показать те ресурсы в 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ом запросить? Комментарии: 5
В AjaxSnippet параметры сохраняются в кеш во время первой загрузки страницы. После этого, когда происходит сам Ajax-запрос, параметры уже не доступны для изменения.
Вам надо написать собственный сниппет-обёртку, например, такую: modx.pro/development/3139/
И уже в этом сниппете вызывать $modx->runSnippet(). Тогда легко можно будет подставить id только что авторизовавшегося пользователя.
Вам надо написать собственный сниппет-обёртку, например, такую: modx.pro/development/3139/
И уже в этом сниппете вызывать $modx->runSnippet(). Тогда легко можно будет подставить id только что авторизовавшегося пользователя.
Спасибо, разобрался с запуском сниппета, теперь не получается вывести ресурсы с фильтрацией по тв полю, как правильно составить where запрос в сниппете?
$modx->runSnippet('pdoResources', array(
// ...
'tvFilters' => "users=={$modx->user->id}",
// ...
));
Спасибо!!!
Может есть инструкция где по составлению этих запросов
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.