Снова о дополнительных TV-полях в TicketForm
        Приветствую!
Вопрос, касающийся дополнительных tv-параметров для формы Tickets.
Было время, когда на многих ресурсах поднимался этот вопрос, но потом все как-то дружно замолчали, как будто узнали решение :) И всё, что я сейчас смог найти, это комментарии двух- а то и трёхлетней давности, из которых толком ничего почерпнуть не получилось.
Суть задачи в следующем: нужно добавить несколько полей типа select в форму создания тикета.
С обычными текстовыми полями проблем не возникает.
Выпадающий список оформил так:
Но в форме выпадающий список не работает — визуально он отображается, но самих данных в нём нет.
Из комментариев понял, что для отображения выпадающего меню нужно написать отдельный сниппет. А что это за сниппет, и как его прикрутить к форме, толком не объясняется.
Очень прошу помочь! без дополнительных полей никак не обойтись.
    
    
                                                                                
            Вопрос, касающийся дополнительных tv-параметров для формы Tickets.
Было время, когда на многих ресурсах поднимался этот вопрос, но потом все как-то дружно замолчали, как будто узнали решение :) И всё, что я сейчас смог найти, это комментарии двух- а то и трёхлетней давности, из которых толком ничего почерпнуть не получилось.
Суть задачи в следующем: нужно добавить несколько полей типа select в форму создания тикета.
С обычными текстовыми полями проблем не возникает.
Выпадающий список оформил так:
<select name="tv_name" id="tv_id">[[+tv_name]]</select>У сниппета в настройках allowedFields добавил tv_name.Но в форме выпадающий список не работает — визуально он отображается, но самих данных в нём нет.
Из комментариев понял, что для отображения выпадающего меню нужно написать отдельный сниппет. А что это за сниппет, и как его прикрутить к форме, толком не объясняется.
Очень прошу помочь! без дополнительных полей никак не обойтись.
Комментарии: 15
                Неужели никому не нужны селект-боксы в тикетах?!            
                    
                Я извиняюсь, а куда это нужно прописать? ) в плагин Tickets или сниппет TicketForm? 
Пробовал и туда, и туда — безрезультатно (
                    Пробовал и туда, и туда — безрезультатно (
                новый плагин создайте, событие OnDocFormSave
            
                    
                Множественный селект нужно чтобы пользователь мог выбирать, в этом загвоздка вся.            
                    $services_services = implode("||", $_POST['services_services']);
			if (!$resource->setTVValue('services_services', $services_services)) {
				  $modx->log(xPDO::LOG_LEVEL_ERROR, 'services_services - ERROR');
			}в админке разделитель ||            
                Запутался немного.
У меня параметр: tv1
Возможные значения ввода: Квартиры||Комнаты||Гаражи||Офисы||
В чанке с формой такой код:
                    У меня параметр: tv1
Возможные значения ввода: Квартиры||Комнаты||Гаражи||Офисы||
В чанке с формой такой код:
<select name="tv1" id="ticket-type">[[+tv1]]</select>Создал плагин ticket_select с кодом:if($mode == 'new' && $resource->class_key == 'Ticket' && $modx->event->name == 'OnDocFormSave'){
	$resource->setTVValue('tv1', $_POST['tv1']);
}Куда нужно прописать вот этот код и что в нем нужно заменить?$services_services = implode("||", $_POST['services_services']);
	if (!$resource->setTVValue('services_services', $services_services)) {
		$modx->log(xPDO::LOG_LEVEL_ERROR, 'services_services - ERROR');
	}            
                Весь код плагина
                    <?php
if($mode == 'new' && $resource->class_key == 'Ticket' && $modx->event->name == 'OnDocFormSave'){
	$tv1 = implode("||", $_POST['tv1']);
	if (!$resource->setTVValue('tv1', $tv1)) {
		$modx->log(xPDO::LOG_LEVEL_ERROR, 'tv1 - ERROR');
	}
}<select name="tv1" id="ticket-type">[[+tv1]]</select>вам тут равнозначные параметрам админки сделать надо, или спарсить все возможные значения            
                Заполнил все option вручную — заработало. Спасибо!
А как парсить значения? ) чтобы каждый раз в чанк не лезть?
                    А как парсить значения? ) чтобы каждый раз в чанк не лезть?
                у меня есть сниппет TicketGetTV, переделайте под свои нужды. но у меня он висит на update тикета, ибо тикеты создаются при регистрации (компании).
вызов такой, name название tv
                    вызов такой, name название tv
[[!TicketGetTV? &tid=`[[+id]]` &name=`services_services`]]код<?php
$title = (!empty($title) ? $title : 'Услуги');
$output = '';
// current tv $name values
$page = $modx->getObject('modResource', $tid);
$tv_current_array = $page->getTVValue($name);
$tv_current = (!empty($tv_current_array) ? $tv_current = explode("||", $tv_current_array) : array());
// all tv $name values
$tvs = $modx->getObject('modTemplateVar', array('name' => $name));
$tv_all = explode('||', $tvs->get('elements'));
if($type == 'select'){
	foreach ($tv_all as $i => $val){
	  $output .= '<option ' . (in_array ($val, $tv_current) ? 'selected' : '') . ' value="'.$val.'">'.$val.'</option>';
	}
	return '<div class="form-group params '.$name.'"><label>'.$title.'</label><div class="inner">
	<select class="chosen-select" multiple name="'.$name.'[]">'.$output.'</select></div><div class="clear"></div></div>';
}else{
	$i = 0; $b = 0;
	foreach ($tv_all as $i => $val){
	  $output .= '<label class="checkbox" for="'.$name.'_'.$i++.'"><input type="checkbox" id="'.$name.'_'.$b++.'" name="'.$name.'[]"
	  ' . (in_array ($val, $tv_current) ? 'checked' : '') . ' value="'.$val.'"><i></i><div>'.$val.'</div></label>';
  	}
  	return '<div class="form-group params '.$name.' hidden"><label class="title_block">'.$tvs->get('caption').'</label><div class="inner_block">'.$output.'</div><div class="clear"></div></div>';
}            
                Огромно спасибо! Буду разбираться и прикручивать )            
                    
                Здравствуйте подскажите этот плагин работает с select multiple множественным выбором?            
                    
                В логи пишет ошибку:
                    [2015-04-24 11:37:54] (ERROR @ /home/bh57920/public_html/core/cache/includes/elements/modplugin/10.include.cache.php : 3) PHP warning: implode(): Invalid arguments passed
[2015-04-24 11:37:54] (ERROR @ /assets/components/tickets/action.php) modTemplateVarResource: Attempt to set NOT NULL field value to NULL            
                условие добавьте если 
                    if(!empty($_POST['tv1']))            
                Здравствуйте, столкнулся с похожей задачей и использовал ваш плагин, сохранение идёт, но у меня чекбоксы берутся из страницы с тегами:
т.е. со стороны админки чекбоксы не отмечаются как активные.
Наверное есть смысл переписать конструкцию в tv?
                    <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?
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    
            
            
                    
                    
                