Удаление ресурсов в MODX Revolution

Здравствуйте. Подскажите, пожалуйста, как программно из фронтенда удалять ресурсы? Вывожу ресурсы с помощью getPage, где для каждого ресурса генерится ссылка-кнопка «Удалить». Как реализовать это? Заранее спасибо!
Вадим Собчук
27 июня 2013, 11:29
modx.pro
3
11 734
0

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

Roman Smile
27 июня 2013, 20:53
0
Можно направить ссылкой на страницу, где вызывается сниппет примерно такой, где docId — это айди удаляемого ресурса.
$docId=intval($_GET['docid']);
$doc = $modx->getObject('modResource', $docId);
$doc->set('deleted', '1');
$doc->save();
Только важно сделать предварительно проверку на то, что это именно тот пользователь, которому можно удалять этот ресурс, если собираетесь передавать айди ресурса методом GET. Ну, чтобы кто попало не мог генерить себе ссылки с айдишниками и не понаудалять вам все что захочет)
    Вадим Собчук
    28 июня 2013, 12:50
    0
    спасибо, и отдельное спасибо за последнюю подсказку!
    Смирнов Николай
    Смирнов Николай
    28 июня 2013, 02:46
    1
    0
    Лучше такие вещи делать через процессоры.
    Тут и проверка прав, и кэш обновиться и события сработают
    <?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();
    }
      Вадим Собчук
      28 июня 2013, 13:06
      0
      спасибо, с процессорами безопаснее будет!
      Алексей
      23 ноября 2013, 22:22
      0
      Здравствуйте.
      Василий, а какие права должен иметь пользователь для удаления ресурса через процессоры (какие разрешения необходимо выставить при настройке учётной записи)?
      Мне не удаётся настроить для Content Editor (
        Алексей
        23 ноября 2013, 23:15
        0
        Разобрался: community.modx-cms.ru/blog/documentation/869.html

        «по-умолчанию «web»-контекст защищён ACL-записью для группы «Администраторы». Залогиненые пользователи должны иметь соответствующее разрешение с контекстом «web» в своих группах для возможности выполнения кода, который производит какие-либо администраторские действия.»
        Антон Владимирович
        17 января 2017, 17:40
        +2
        Скажите пожалуйста, а как программно удалить ресурс полностью? Не пометить как удаленный, а именно удалить. Без возможности восстановления. Чистить корзину в админке не выходит. Слишком много таких записей, помеченных на удаление, сервер не успевает, виснет. Спасибо!
          Ярослав
          31 января 2018, 00:44
          0
          Документ будет удален сразу из базы.
          $resource = $modx->getObject('modResource', 62); // Получаем документ
          $resource->remove(); // Удаляем документ
            Денис
            25 февраля 2018, 01:03
            0
            Ярослав, а можно поподробнее, как вы реализовали удаление документа из фронтэнда?
            Спасибо.
              Ярослав
              25 февраля 2018, 14:21
              0
              Вы имеете ввиду чтобы пользователь мог удалять ресурсы? Свои надо понимать только — те что создал когда-то. Это уже вопрос прав скорее разрешено ему удалять или нет — а принцип такой же.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            10