Создание ресурсов из фронтенда часть первая


Нередко возникает необходимость создания и редактирования ресурсов из фронтенда.
Подобный функционал на сайте вполне возможно реализовать для зарегистрированных пользователей.
Используется дополнение Formit и всего два сниппета
Функционал включает
Ресурсы
Страница создания нового ресурса
Страница редактирования ресурса
Сраница родитель для модерирования ресурсов
Сниппеты
formitCreate
formitEdit
FormitFile
Сниппеты formitCreate используется для создания нового ресурса
<code>
<?php
$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 = $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->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;
</code>


Менее подробно это описано Олей на сайте вот здесь.
1 источник https://webhow.ru
27 декабря 2021, 19:32    Анатолий Статьи 0    0 0


Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Это супер пупер блог

    С огромнымнейшим грондиознейшим блоком тегов или меток.

    Подробнее
    Анатолий 10 августа 2020, 16:20 # 0
    Евросоюз обратился к властям Беларуси с требованием освободить всех демонстрантов, задержанных во время протестов после президентских выборов. Заявление опубликовано на сайте ЕС.

    «Ночь после выборов была омрачена непропорциональным и неприемлемым насилием государства против мирных демонстрантов», — говорится в нем. ЕС осудил произошедшее и отметил, что теперь жители Беларуси ожидают честного подсчета голосов и важно, чтобы ЦИК опубликовал результаты, отражающие их выбор.

    «Только соблюдение прав человека, демократии, свободных и справедливых выборов гарантирует стабильность и суверенитет в Беларуси. Мы продолжим внимательно следить за развитием событий, чтобы оценить, как в дальнейшем формировать реакцию ЕС и отношения с Беларусью с учетом развивающейся ситуации», — заключил Евросоюз.
    Тикет тестТикет тест Карта картинка 2   3
    Анатолий 10 августа 2020, 16:20 # 0
    Евросоюз обратился к властям Беларуси с требованием освободить всех демонстрантов, задержанных во время протестов после президентских выборов. Заявление опубликовано на сайте ЕС.

    «Ночь после выборов была омрачена непропорциональным и неприемлемым насилием государства против мирных демонстрантов», — говорится в нем. ЕС осудил произошедшее и отметил, что теперь жители Беларуси ожидают честного подсчета голосов и важно, чтобы ЦИК опубликовал результаты, отражающие их выбор.

    «Только соблюдение прав человека, демократии, свободных и справедливых выборов гарантирует стабильность и суверенитет в Беларуси. Мы продолжим внимательно следить за развитием событий, чтобы оценить, как в дальнейшем формировать реакцию ЕС и отношения с Беларусью с учетом развивающейся ситуации», — заключил Евросоюз.
    Тикет тестТикет тест Карта картинка 2   3
    Анатолий 10 августа 2020, 16:20 # 0
    Евросоюз обратился к властям Беларуси с требованием освободить всех демонстрантов, задержанных во время протестов после президентских выборов. Заявление опубликовано на сайте ЕС.

    «Ночь после выборов была омрачена непропорциональным и неприемлемым насилием государства против мирных демонстрантов», — говорится в нем. ЕС осудил произошедшее и отметил, что теперь жители Беларуси ожидают честного подсчета голосов и важно, чтобы ЦИК опубликовал результаты, отражающие их выбор.

    «Только соблюдение прав человека, демократии, свободных и справедливых выборов гарантирует стабильность и суверенитет в Беларуси. Мы продолжим внимательно следить за развитием событий, чтобы оценить, как в дальнейшем формировать реакцию ЕС и отношения с Беларусью с учетом развивающейся ситуации», — заключил Евросоюз.
    Тикет тестТикет тест Карта картинка 2   3

    Подробнее
    modx php js css html bootstrap awsome awesome