OnDocFormSave
Последнее обновление Jan 28th, 2020 | История страницы | Улучшить эту страницу | Сообщить о проблеме
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
Budget
$301 per month—let's make that $500!
Learn moreСобытие: OnDocFormSave¶
Запускается после сохранения ресурса в менеджере через форму редактирования.
Служба: 1 - Parser Service Events Группа: Documents
TVs Лучше всего модифицировать здесь Если вам нужно изменить значения TV, лучше изменить их здесь, а не во время OnBeforeDocFormSave.
В отличие от OnBeforeDocFormSave, это событие не поддерживает метод $modx->event->output()
.
Параметры события¶
Имя | Описание |
---|---|
mode | Either 'new' or 'upd', depending on the circumstances. |
resource | Ссылка на объект modResource. |
id | The ID of the Resource (even for new resources) |
Примеры¶
Чтобы сделать что-то с идентификатором страницы (например, чтобы обновить связанную пользовательскую таблицу), вы можете прочитать это из объекта $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
}
Все, что вы вернете из этого события, будет записано в журналы, например,
return "Help I'm a bug!";
Результатом будет сообщение журнала, подобное следующему:
[2012-06-22 13:00:28] (ERROR @ /connectors/resource/index.php) [OnDocFormSave]Help I'm a bug!
Вычисление значения TV¶
switch ($modx->event->name) {
// Documents
case 'OnDocFormSave':
if ($resource->get('template') == 8) {
if(!$resource->setTVValue('my_tv', 'Some Value')) {
$modx->log(modX::LOG_LEVEL_ERROR, 'There was a problem setting the TV value.');
}
}
break;
}
Такой плагин выведет в "Журнал ошибок" массив сохраняемого ресурса:
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormSave':
$modx->log(MODX_LOG_LEVEL_ERROR, print_r($resource->toArray(),true) );
break;
}
Такой плагин установит значение ТВ price текущего ресурса равным 128, при ошибке в "Журнал ошибок" добавится запись:
<?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.
Автоматическое сохранение
Нет необходимости запускать $resource->save()
метод, так как это происходит автоматически.
Смотри также¶
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
Budget
$301 per month—let's make that $500!
Learn more