Помогите разобраться с AjaxSnippet
Задача удалять ресурсы из фронтенда
Есть страница с листом ресурсов
В каждом ресурсе создается ссылка на его удаление так:
Не смог разобраться как выполнить задачу правильно по инструкции на сайте
Помогите разобраться, пожалуйста!
Есть страница с листом ресурсов
В каждом ресурсе создается ссылка на его удаление так:
[[!AjaxSnippet?
&snippet=`deleteAdv`
&as_mode=`onclick`
&as_trigger=`<a href="[[~[[*id]]]]" class="link_del">Удалить объявление</a>`
]]
при нажатии нужно активировать снипет deleteAdv, который проверит все что надо, а основное пометить ресурс на удаление, и убрать удаленный ресурс из листа, снипет такой:<?php
$res=$modx->getObject('modResource',array('id'=>$id));
$res->set('deleted', true);
$res->save();
В итоге так ничего не работает, не выполняется снипетНе смог разобраться как выполнить задачу правильно по инструкции на сайте
Помогите разобраться, пожалуйста!
Комментарии: 14
Не уж то никто не знает, или я не корректный вопрос задал?
Подскажите, пожалуйста, хоть куда копать.
Подскажите, пожалуйста, хоть куда копать.
[[!AjaxSnippet?
&snippet=`deleteAdv`
&id=`[[+id]]`
&as_mode=`onclick`
&as_trigger=`Удалить объявление`
]]
deleteAdv:<?php
$res = $modx->getObject('modResource',$id);
if ($res) {
$res->remove();
} else {
$modx->log(modX::LOG_LEVEL_ERRROR, 'Resource ' . $id. ' not found.');
}
Спасибо, но так удаляются все ресурсы выведенные на страницу при нажатии на одну ссылку в одном ресурсе
Где вызываете сниппет?
Есть страница с листом ресурсов выведена через pdoResources
в каждом ресурсе есть ссылка Удалить
в каждом ресурсе есть ссылка Удалить
[[!AjaxSnippet?
&snippet=`deleteAdv`
&id=`[[+id]]`
&as_mode=`onclick`
&as_trigger=`Удалить объявление`
]]
Поставлю вопрос по-другому: куда вы записываете код, что написали выше?
Попробуйте изменить сниппет deleteAdv:
Ещё было бы неплохо создать тестовый сервер, чтобы можно было это всё вживую «пощупать».
<?php
$res = $modx->getObject('modResource',$id);
if ($res) {
$modx->log(modX::LOG_LEVEL_INFO, $id);
//$res->remove();
} else {
$modx->log(modX::LOG_LEVEL_ERRROR, 'Resource ' . $id. ' not found.');
}
И посмотреть, что выведется в логе. Быть может не подхватывает правильный id, будем думать тогда, что с этим делать, или в чём ошибка.Ещё было бы неплохо создать тестовый сервер, чтобы можно было это всё вживую «пощупать».
в шаблон вывода каждого элемента- ресурса на страницу через pdoResources
Я надеялся что при нажатии на ссылку Удалить объявление, будет вызываться сниппет deleteAdv и ресурс будет удален, но на деле все ресурсы на странице удаляются
хотя id у всех разные
хотя id у всех разные
Хм, раз так, значит срабатывают вызовы всех сниппетов сразу. Посмотрите по id или class срабатывает кнопка и не одно ли значение у всех этих кнопок установлено.
вопрос не решен
может есть у кого-то дельные мысли по поводу вопроса?
может есть у кого-то дельные мысли по поводу вопроса?
Написать свой запрос и обработчик, не используя ajaxSnippet. Более подробно о том как это сделать описано в этой статье.
Да спасибо за помощь, я конечно решил уже проблему не используя ajaxSnippet.
Однако разобраться с вопросом хотелось бы.
Однако разобраться с вопросом хотелось бы.
Наверно проще было бы использовать AjaxForm.
Но для каждой записи(ресурса) будет тег form и запускаться сниппет это не есть хорошо.
Проще как писали выше написать свое.
Допустим при клике берется айди ресурса, посылается аяксом на страницу, а там уже ждет сниппет удаления ресурса.
И как я понял из документации AjaxSnippet — это подгрузчик инфы через аякс.
Но для каждой записи(ресурса) будет тег form и запускаться сниппет это не есть хорошо.
Проще как писали выше написать свое.
Допустим при клике берется айди ресурса, посылается аяксом на страницу, а там уже ждет сниппет удаления ресурса.
$('.delRes').on('click', function() {
var id = $(this).data('id');
$.ajax({
url: '/delRes.html',
dataType: 'json',
data: {
id: id
},
success: function(res) {
if (res['success']) {
console.log('Ресурс удален');
} else {
console.log('Ресурс Не удален');
}
}
});
});
Естественно в Сниппете должны быть проверки типа разрешено удалять или нет, аякс запрос и т.д.И как я понял из документации AjaxSnippet — это подгрузчик инфы через аякс.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.