Сравнение дат в админке
Добрый день.
Есть два TV поля с типом «дата».
Первое поле — «Дата начала»
Второе поле — «Дата завершения»
Есть ли возможность сделать так, чтобы менеджер не мог поставить дату завершения меньше даты начала?
Есть два TV поля с типом «дата».
Первое поле — «Дата начала»
Второе поле — «Дата завершения»
Есть ли возможность сделать так, чтобы менеджер не мог поставить дату завершения меньше даты начала?
Комментарии: 8
если в админке, то нужно плагин написать
Спасибо!
Разбираюсь с плагинами.
Подскажите, как получить TV до сохранения ресурса.
$resource->getTVValue('date') — таким образом берет уже существующее значение
Событие использую OnBeforeDocFormSave. Или нужно другое событие?
Разбираюсь с плагинами.
Подскажите, как получить TV до сохранения ресурса.
$resource->getTVValue('date') — таким образом берет уже существующее значение
Событие использую OnBeforeDocFormSave. Или нужно другое событие?
я думаю да, можете еще тут посмотреть https://www.riwkus.pro/notes/web/back-end/modx/plugins-and-events/
$resource->getTVValue('date') — таким образом берет уже существующее значение
Это метод стучится в базу. А в базе ещё старое значение.По-моему, к ТВшке можно обратиться через свойство изменяемого ресурса — «tv» + id ТВ.
// Для ТВ с id 7
$resource->tv7
Действительно, работает. Большое спасибо!)
Может вам так же известно как подсветить поле красным и сфокусироваться на нем?
Как это работает с стандартной валидацией полей в MODx при сохранении.
Может вам так же известно как подсветить поле красным и сфокусироваться на нем?
Как это работает с стандартной валидацией полей в MODx при сохранении.
Сие мне неведомо. А ковырять код не имею желания. ;)
В итоге плагин сделал вот так:
$modx->event->output() — выводит текст о ошибке в модальном окне и не сохраняет ресурс
switch ($modx->event->name) {
case 'OnBeforeDocFormSave':
$id = $resource->get('id');
$parent = $modx->getParentIds($id, 10, array('context' => 'web'));
$datestart = date("Ymd", strtotime($resource->tv17));
$dateend = date("Ymd", strtotime($resource->tv18));
if ($parent[0] == 2) {
if ($datestart > $dateend) {
$modx->event->output('Сообщение о ошибке');
}
}
break;
}
OnBeforeDocFormSave — плагин срабатывает до сохранения ресурса$modx->event->output() — выводит текст о ошибке в модальном окне и не сохраняет ресурс
Мда.На троечку сойдёт. Без обид.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.