Tickets - ТВ на основе селекта с мультивыборо

Создаю во фронтенде документ с помощью Tickets.
[[!TicketForm?
	&tplFormCreate=`tpl.Tickets.form.create`
	&allowedFields=`parent,pagetitle,content,metro,logo`
	&allowFiles=`1`
]]
Все поля документа и ТВ-параметры сохраняются, кроме полей с множественным выбором… Как решить проблему?

В чанк tpl.Tickets.form.create есть такая конструкция для полей с множественным выбором:

<div class="form-group">
		<label for="ticket-metro">Метро</label>
		<select name="metro[]" class="form-control" multiple="multiple" id="ticket-metro">
			<option value="1" >1</option>
			<option value="2" >2</option>
			<option value="4" >4</option>
			....
		</select>
		<span class="error"></span>
	......
При таком чанке в базе сохраняется Array, если выбрать более 2 значений…

Если в чанке заменить
<select name="metro[]"
на
<select name="metro"
, сохраняется только одно значение…
А надо чтоб в базе сохранилась запись вида
1||2||4
Я так понимаю надо элементы массива metro[] разделить разделителями ||, как это сделать?
Yanusya
18 февраля 2015, 12:07
modx.pro
2
1 035
0

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

Максим Кузнецов
19 февраля 2015, 06:34
0
Плагином, скорее всего, на событие OnDocFormSave перехватывать значение, видоизменять и сохранять. Примерно вот так:

<?php
	if ($modx->event->name == 'OnDocFormSave') {
		$metro = $resource->getTVValue('metro');
		
		
		if (strlen($metro) > 0) {
			$newMetroValue = ... //видоизменяешь как тебе необходимо (разбиваешь массив и тд)
			
			$resource->setTVValue('metro', $newMetroValue);
		}
		
		$resource->save();
	}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1