Суть проблемы в том, в админке чекбосы не как отмеченные(активные), а на выходе просто строка.
Сам плагин:
if($mode == 'new' && $resource->class_key == 'Ticket' && $modx->event->name == 'OnDocFormSave'){
$tegs = implode("||", $_POST['tegs']);
if (!$resource->setTVValue('tegs', $tegs)) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'tegs - ERROR');
}
}
Автор плагина
На выходе получается, сохранение идёт но, как будто-бы передаёт значения в строку, хотя getTVValue это и должен делать может надо тогда как-то сложнее создавать плагин?
т.е. со стороны админки чекбоксы не отмечаются как активные. Из беседы непонятно были у ребят проблемы с сохранением в админке или нет.
Так вывожу теги в tpl.Tickets.form.create:
<select name="tegs[]" class="form-control" id="ticket-tegs" multiple>
[[pdoResources?
&parents=`5`
&depth=`0`
&tpl=`@INLINE <option value="[[+id]]">[[+pagetitle]]</option>`
]]
</select>
Так TV извлекает теги:
@EVAL return $modx->runSnippet('pdoMenu',array('parents'=>5,'tplOuter'=>'@INLINE [[+wrapper]]','tpl'=>'@INLINE [[+pagetitle]]==<span><a href="/[[+uri]]">[[+pagetitle]]</a></span>||'));
Может это может мне помочь:
Как получить значении tv, не как строку а как данные(в том формате в котором они хранятся)?
- ответ
здесь
Видимо значения tv итак хранятся как строки. Видимо я не корректно их передаю...
____________________________
Сейчас пробую
по другому
Правда на этот раз tv не выводятся
хотя в документации к tiketsForm сказано "Можно добавлять tv" и ни одного примера с добавленым tv
вывожу так:
[[TicketForm?
&allowedFields=`parent,pagetitle,content,published,tegs`
&formBefore=`1`
&autoPublish=`1`
&tplFormCreate=`tpl.Tickets.form.create`
]]
// в tpl.Tickets.form.create
<select name="tegs[]" class="form-control" id="ticket-tegs" multiple>
[[+tegs:tvValue]]
</select>
//сниппет
<?php
$tv = $modx->getObject('modTemplateVar', array('name' => $name));
$elements = $tv->get('elements');
$element = explode('||', $elements);
foreach($element as $e) {
list($elName,$elId) = explode("==", $e);
if ($elId == $input) {
$selected = ' selected="selected"';
} else {
unset($selected);
}
echo '<option value="'.$elId.'"'.$selected.'>'.$elName.'</option>';
}