Пропишем следующий код PHP:
<?php
/*
Сниппет записывает в базу данных значения полей формы создания нового ресурса из фронтенда
Источник Любимцева Ольга
https://webhow.ru/modx-revolution/modxadd/modx-revolution-sozdanie-resursov-i-zagruzka-fajjl.html
в создании ресурса участвуют два сниппета
formit2file - загрузка файлов изображений
formit2resource записывает в базу данных значения полей формы создания нового ресурса из фронтенда
использование
[ [!FormIt?
&hooks=`formit2file,formit2resource,redirect`
&redirectTo=`ID страницы с сообщением о создании ресурса`
&template=`ID шаблона ресурса`
] ]
$allFormFields = $hook->getValues(); получаем из формы массив значений
в том числе и значение pagetitle
массив $fields
*/
$resid = $hook->getValue('resource_id');
$modx->log(3, 'resid ='.$resid);
$doc = $modx->getObject('modResource',array('id'=>$hook->getValue('resource_id')));
// ресурс еще не сохранен
if (empty($doc)){
$doc = $modx->newObject('modResource');
$doc->set('createdby', $modx->user->get('id'));
}
else{
$doc->set('editedby', $modx->user->get('id'));
}
//Создаем массив полей формы $allFormFields и можем по названию получить значение из этого массива
//и в цикле присваиваем значения полям ресурса
$mass="";
$allFormFields = $hook->getValues();
$colelem= count($allFormFields); // элементов масива count($resources)
foreach ($allFormFields as $field=>$value)
{
if ($field !== 'spam' && $field !== 'resource_id')
{
$doc->set($field, $value);
$mass=$mass.' field='.$field.' value- '.$value.',
';
}
}
/* Создаем алиас ресурса начало */
$alias = $doc->cleanAlias($fields['pagetitle']);
if($modx->getCount(modResource, array('alias'=>$alias))!= 0)
{
$count = 1;
$newAlias = $alias;
while($modx->getCount(modResource, array('alias'=>$newAlias))!= 0) {
$newAlias = $alias;
$newAlias .= '-' . $count;
$count++;
}
$alias = $newAlias;
}
$doc->set('alias',$alias);
$doc->set('template', $template);
$doc->save();
/* Создаем алиас ресурса начало конец */
/* Заполняем и сохраняем дополя */
foreach ($allFormFields as $field=>$value)
{
if (!empty($value) && $tv = $modx->getObject('modTemplateVar', array ('name'=>$field)))
{
/* handles checkboxes & multiple selects elements */
if (is_array($value)) {
$featureInsert = array();
while (list($featureValue, $featureItem) = each($value)) {
$featureInsert[count($featureInsert)] = $featureItem;
}
$value = implode('||',$featureInsert);
}
$tv->setValue($doc->get('id'), $value);
$tv->save();
}
}
//Ресурс полностью сохранен и можно дополнять данными
//$img = $allFormFields['img'];
//$foto1 = $allFormFields['foto1'];
$mbidres=$doc->get('id');
$modx->log(3, 'может быть resid ='.$resid);
//$doc->setTVValue('resid',$mbidres);//********присваиваем значение TV************//
//$doc->setTVValue('img',$img);//********присваиваем значение TV************//
//$doc->setTVValue('foto1',$foto1);//********присваиваем значение TV************//
//$modx->log(3, $mass);
//$doc->set('introtext', 'элементов '.$mass);
$doc->save();
$modx->cacheManager->refresh();
return true;