Редактирование ресурса через процессоры.

Добрый день. Разбираюсь в вопросе редактирования ресурса. Если быть чуть точнее — товаров.
$data['class_key'] = 'msProduct';
$data['context_key'] = 'web';
$data['parent'] = $_POST['cat'];
$data['template'] = '3';
$data['alias'] = RAND(0,99999);
$data['pagetitle'] = $_POST['nsmes'];
$data['content'] = $_POST['texts'];
$data['price'] = '550';

$response = $modx->runProcessor('resource/create', $data);
if ($response->isError()) {
    return $modx->error->failure($response->getMessage());
}
Создали товар, все отлично, проблем нету. А как его отредактировать? Не могу нагуглить примера, есть только один нерабочий:

$title   =  $_POST['title'];
$content =  $_POST['content'];
$resId   =  $_POST['resId'];

$resourceData = array(
    'id' => $resId,
    'pagetitle' => $title,
    'content' => $content,
    'context_key' => 'web'
);
$response = $modx->runProcessor('resource/update', $resourceData );

$modx->cacheManager->clearCache();
Но я не могу понять, как процессор решает какой ресурс ему обновить?
Николай
03 марта 2014, 14:14
modx.pro
910
0

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

Aртур Чикин
03 марта 2014, 21:50
0
Ты в форме методом post передаешь id ресурса для редактирования.
Получается ты передаешь id, pagetitle,content это все вносится в массив resourceData и передается процессору.
    Николай
    03 марта 2014, 22:00
    0
    Т.е процессор ориентируется на id что я ему даю? Для него это условие WHERE, а остальные переменные что я даю (pagetitle, content e.t.c) для него то, что необходимо обновить? Я верно понял?
      Aртур Чикин
      03 марта 2014, 22:25
      0
      Пишу в браузере, но думаю работать будет:

      $data['id'] 		= $_POST['resId']; //твой id
      $data['class_key'] 	= 'msProduct';
      $data['context_key'] 	= 'web';
      $data['parent'] 	= $_POST['cat'];
      $data['template'] 	= '3';
      //$data['alias'] 	= RAND(0,99999);
      $data['pagetitle'] 	= $_POST['nsmes'];
      $data['content'] 	= $_POST['texts'];
      $data['price'] 		= '550';
      
      $response = $modx->runProcessor('resource/update', $data);
      if ($response->isError()) {
          return $modx->error->failure($response->getMessage());
      }
        Николай
        06 марта 2014, 13:31
        0
        Отлично, все работает. Логику работы понял, спасибо. Но назрел еще один вопрос, обновление будет проходить по крону, будут ли у меня тут проблемы? Я как то добавлял товары, и понял что чтобы добавлялось мне нужно быть авторизованным как админ. Мне хватит вызова просессора авторизации?
          Aртур Чикин
          06 марта 2014, 13:37
          0
          Тут не уверен, зависит от того что должен выполнять вызов крона. Обычно крон используют что бы выполнять второстпенные задачи например уборка мусора, чистка старых сессий, рассылка писем. Так что ты для начала сформируй задачу, начни реализовать, а если не получится что то вот тогда конкретный вопрос и задавай.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5