Как присвоить динамический ТВ параметр ?
Добрый день, подскжите можно ля реализовать динамические значение ТВ параметра который будет заполняться в виде 00001, 00002 и так далее?
Комментарии: 6
Можно через плагин на onDocFormSave, получать из базы максимальный текущий и новому ресурсу присваивать на 1 больше, если у него еще не задано.
Только так, да.
Большое спасибо, но я не могу написать такой плагин самостоятельно, не могли бы вы покахзать хотябы небольшой пример в на основе которого я мог бы это сделать?
Если я правильно понял задачу
<?php
// onDocFormSave
$q = $modx->newQuery('modResource');
$q->where(array(
'parent' => 409
)); // можно задать какое то условие например родителя где создаются ресурсы с нужными tv
$q->sortby('id', 'DESC');
$q->limit(1);
$res = $modx->getCollection('modResource', $q);
foreach($res as $v)
{
$lastIdClient = $v->getTvValue('id_client'); // получаем значение TV у последнего ресурса, для примера я назвал его "id_client" у вас должен быть свой
}
$nextIdClient = $lastIdClient + 1; // прибавляем один и дальше делаем, что хотим, например сохраняем это значение у нового ресурса в нужном нам TV
Большое спасибо, с задачей уже разобрался, примерно так и написал, но ваш вариант по элегантней, большое спасибо!!!
А можно еще проще, если ресурсы идут последовательно. Просто считаем количество ресурсов у нужного родителя.
$count=$modx->getCount('modResource',array('parent' => 10))+1;
Добавляем в начало нули и готово.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.