[КОСТЫЛИ] Динамическая смена шаблона в Tickets

Приветствую, у меня есть два раздела с тикетами, в каждом из которых свой шаблон должен быть у тикета. Соответственно написал вот такой вызов формы
{'!TicketForm' | snippet: [
                'allowedFields' => 'parent,pagetitle,content,longtitle,conf_logo,startdate,enddate,template,place',
                'requiredFields' => 'parent,pagetitle,content,longtitle,conf_logo,place,startdate,enddate,template',
                'validate'=>'
                longtitle:required:maxLength=^100^,
                place:required:maxLength=^300^,
                conf_logo:required,
                startdate:required,
                enddate:required,
                content:required:minLength=^120^',
                'conf_logo.vTextRequired' => 'Выберите логотип',
                'longtitle.vTextRequired' => 'Вы не указали название',
                'place.vTextRequired' => 'Вы не указали место проведения',
                'content.vTextRequired' => 'Нельзя оставлять это поле пустым',
                'enddate.vTextRequired' => 'Укажите дату окончания мероприятия',
                'startdate.vTextRequired' => 'Укажите дату начала мероприятия',
                'tplFormCreate'=>'@FILE chunks/forms/createConfForm.html',
                'tplFiles' => '@FILE chunks/forms/ticketFileForm.html',
                'tplImage' => '@FILE chunks/tickets/imgPreview.html',
                'redirectUnpublished' => 27,
                'tid' => ($.get['ticket'] ?: 0)
                ]}
Добавил поле template в саму форму, НО шаблон всё равно берется из настройки tickets.default_template. Я полез в core/components/tickets/model/tickets/tickets.class.php там примерно на 322 строке вот это
$response = $this->modx->runProcessor('resource/update', $fields);

В $field есть template с нужным значением, и в resource/update на 215 строке в $scriptProperties['template'], но всё равно шаблон не меняется.
Ладно подумал я, напишу плагин на событие OnBeforeDocFormSave
<?php
switch ($modx->event->name) {
    case 'OnBeforeDocFormSave':
        //$modx->log(1, print_r($_POST,1));
       if($_POST['template']){
            $resource->set('template', $_POST['template']);
        }
        break;
}
шаблон меняется, но ТВшки не устанавливаются. Ладно, подумал я снова попробую так
<?php
switch ($modx->event->name) {
    case 'OnDocFormSave':      
         if($resource->get('template') == 9 && $_POST['conf_logo']){
            foreach($_POST as $k => $v){
                $resource->setTVvalue($k, $v);
            }
        }
И получилось, но как по мне это немного костыль. Может быть кто-то знает более правильный способ сделать тоже самое?
Артур Шевченко
07 декабря 2020, 22:18
modx.pro
402
0
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0