создание документа программно не msproduct обычный ресурс

Всем привет.

Опытные разработчики на modx revo нетолько shopов подскажите пожалуйста

как создать документ программно обычный resource

нашёл примеры в инете создаётся с pagetitle всё ок

но при повтороном создании создаётся заново

тоесть как бы простой отзыв из личного кабинет

простая форма, shop нравится всё ок submit

создаётся ресурс программно от usera c pagetitle от usera

ресурс pagetitle с username отзыв 1

ресурс pagetitle с username отзыв 2

ресурс pagetitle с username отзыв 3

ресурс pagetitle с username отзыв 4

ресурс pagetitle с username отзыв 5

как реализовать проверку чтобы ресурсы постоянно несоздавались а был один ресурс и постоянно обновлялся,
несоздавая новые

создаётся ресур (доэтого проверяется есть ли данный ресур и несоздаётся с новым id )

[[!FormIt?
&hooks=`formit2file,formit2resource`
&template=``]]
</div>


snippet

formit2resource

<?php
$doc = $modx->getObject('modResource',array('id'=>$hook->getValue('username')));


if (empty($doc)){
    $doc = $modx->newObject('modResource');
    $doc->set('createdby', $modx->user->get('id'));
}


else{
    $doc->set('editedby', $modx->user->get('id'));
}


 
$allFormFields = $hook->getValues();
foreach ($allFormFields as $field=>$value)
{
 
   if ($field !== 'spam' && $field !== 'resource_id'){
         $doc->set($field, $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->set('published', 0);
$doc->set('hidemenu', 1);

$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();
    }
}

$modx->cacheManager->refresh();
 
return true;

chunk form

сделал так

<input class="field" type="text" name="pagetitle" 
value="[[+fi.pagetitle]]отзыв [[*createdon:strtotime:date=`%c`]] 
от пользователя [[!+modx.user.id:userinfo=`username`]]" />


буду очень признателен кто поможет дополнить проверку

Если нужен в помошь человек по созданию интернет магазинов, с удовольствием поучавствую с лояльной занятостью.
В прогрраммной части несилён (создание кастомных сниппетов сложная кастомная фильтрация и тд), пишите в личку если нежун в помошь человек и есть надобность
(сроки поджимают, устаём наполянть своим тимом, просто сам делаю нужна помошь неуспеваю отдать shop заказчику).
Кирилл
21 мая 2019, 16:00
modx.pro
731
0

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

Андрей
21 мая 2019, 16:15
+3


Лучше использовать для отзывов соответствующие решения, например — easyComm, также можно использовать ticketsComments.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1