Задать вопрос

Как передать состояние чекбоксов из фронтедна tiketsForm?

Суть проблемы в том, в админке чекбосы не как отмеченные(активные), а на выходе просто строка.

Сам плагин:
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>';
}
  • Вопрос задан
  • 196 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы