Jump to main content Jump to doc navigation

Событие: OnDocFormSave

Событие запускается после сохранения ресурса в менеджере через процессор создания или обновления (Resource\Create, Resource\Update). Оно также срабатывает при inline-редактировании удалённого ресурса в сетке корзины (Resource\UpdateFromGrid).

  • Служба: 1 - Parser Service Events
  • Group: Resources

TVs лучше всего изменять здесь. Если вам нужно изменить значения TV, лучше изменить их здесь, а не во время OnBeforeDocFormSave. В отличие от OnBeforeDocFormSave, это событие не поддерживает метод $modx->event->output().

Сохранение происходит автоматически. Не нужно вызывать $resource->save().

Всё, что вы вернёте из этого события, записывается в журнал ошибок.

Параметры события

Имя Описание
mode Либо 'new' или 'upd', в зависимости от обстоятельств.
id Идентификатор ресурса (даже для новых ресурсов)
resource Ссылка на объект modResource.
reloadOnly Только при создании: true, если процессор лишь перезагружает форму после ошибки валидации.
object Только при обновлении: ссылка на объект modResource, тот же экземпляр, что и resource.

Примеры

Чтение идентификатора ресурса

Чтобы сделать что-то с идентификатором страницы (например, чтобы обновить связанную пользовательскую таблицу), вы можете прочитать это из объекта $resource (даже если вы создаете новый ресурс):

// Log all available properties of the $resource
$modx->log(MODX_LOG_LEVEL_ERROR, print_r($resource->toArray(),true) );
// Get the page id
$page_id = $resource->get('id');
// or simply
$page_id = $id;

if ($mode == 'new') {
    // resource created
}
else {
   // existing resource was updated
}

Значение TV

<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormSave':
        //если у ресурса шаблон=5
        if ($resource->get('template') == 5) {  
            // после сохранения значение ТВ price=128
            if(!$resource->setTVValue('price', '128')) {
                $modx->log(modX::LOG_LEVEL_ERROR, 'Возникли проблемы при установке значения ТВ.');
            }
        }
        break;
}

И не важно заполнено ли поле price перед сохранением, или нет. Плагин запишет 128.

Смотри также

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • JT Skaggs
  • deJaya
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$194 per month—let's make that $500!

Learn more