Удаление ресурсов в MODX Revolution
Здравствуйте. Подскажите, пожалуйста, как программно из фронтенда удалять ресурсы? Вывожу ресурсы с помощью getPage, где для каждого ресурса генерится ссылка-кнопка «Удалить». Как реализовать это? Заранее спасибо!
Комментарии: 10
Можно направить ссылкой на страницу, где вызывается сниппет примерно такой, где docId — это айди удаляемого ресурса.
$docId=intval($_GET['docid']);
$doc = $modx->getObject('modResource', $docId);
$doc->set('deleted', '1');
$doc->save();
Только важно сделать предварительно проверку на то, что это именно тот пользователь, которому можно удалять этот ресурс, если собираетесь передавать айди ресурса методом GET. Ну, чтобы кто попало не мог генерить себе ссылки с айдишниками и не понаудалять вам все что захочет)
спасибо, и отдельное спасибо за последнюю подсказку!
Лучше такие вещи делать через процессоры.
Тут и проверка прав, и кэш обновиться и события сработают
Тут и проверка прав, и кэш обновиться и события сработают
<?php
if (!isset($_GET['docid']) and !$id = intval($_GET['docid'])) {
return;
}
$response = $modx->runProcessor('resource/delete', array('id' => $id));
if (!$response->isError()) {
return 'Ресурс отмечен как удаленный!';
// echo $response->getResponse();
}
спасибо, с процессорами безопаснее будет!
Здравствуйте.
Василий, а какие права должен иметь пользователь для удаления ресурса через процессоры (какие разрешения необходимо выставить при настройке учётной записи)?
Мне не удаётся настроить для Content Editor (
Василий, а какие права должен иметь пользователь для удаления ресурса через процессоры (какие разрешения необходимо выставить при настройке учётной записи)?
Мне не удаётся настроить для Content Editor (
Разобрался: community.modx-cms.ru/blog/documentation/869.html
«по-умолчанию «web»-контекст защищён ACL-записью для группы «Администраторы». Залогиненые пользователи должны иметь соответствующее разрешение с контекстом «web» в своих группах для возможности выполнения кода, который производит какие-либо администраторские действия.»
«по-умолчанию «web»-контекст защищён ACL-записью для группы «Администраторы». Залогиненые пользователи должны иметь соответствующее разрешение с контекстом «web» в своих группах для возможности выполнения кода, который производит какие-либо администраторские действия.»
Скажите пожалуйста, а как программно удалить ресурс полностью? Не пометить как удаленный, а именно удалить. Без возможности восстановления. Чистить корзину в админке не выходит. Слишком много таких записей, помеченных на удаление, сервер не успевает, виснет. Спасибо!
Документ будет удален сразу из базы.
$resource = $modx->getObject('modResource', 62); // Получаем документ
$resource->remove(); // Удаляем документ
$resource = $modx->getObject('modResource', 62); // Получаем документ
$resource->remove(); // Удаляем документ
Ярослав, а можно поподробнее, как вы реализовали удаление документа из фронтэнда?
Спасибо.
Спасибо.
Вы имеете ввиду чтобы пользователь мог удалять ресурсы? Свои надо понимать только — те что создал когда-то. Это уже вопрос прав скорее разрешено ему удалять или нет — а принцип такой же.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.