Обязательность поля "content" в Тикетах
        Василий, вот столкнулся здесь…
В общем есть необходимость сделать поле «content» в тикетах не обязательным (не спрашивай зачем :-)).
И вот я не пойму — в методе тикета используется стандартный процессор resource/create, этот же процессор, как я понимаю, срабатывает и при создании докуменов из админки. Но вот из админки поле «контент» не обязательно, а с фронта — обязательно.
Почему так? Куда копать?
    
    
                                                                                
            В общем есть необходимость сделать поле «content» в тикетах не обязательным (не спрашивай зачем :-)).
И вот я не пойму — в методе тикета используется стандартный процессор resource/create, этот же процессор, как я понимаю, срабатывает и при создании докуменов из админки. Но вот из админки поле «контент» не обязательно, а с фронта — обязательно.
Почему так? Куда копать?
Комментарии: 5
                Тикет — это CRC, у него свой процессор, который вызывается стандартным. Проверка вот тут.
Можно просто сделать в форме скрытое поле content с любым символом — и будет работать.
                    Можно просто сделать в форме скрытое поле content с любым символом — и будет работать.
                Ага, понял, спасибо!
А вот ещё такой момент:
Через форму создания надо сохранять и твшки, но некоторые tv-шки обязательны.
Поэтому я пошёл таким путём: создал копию сниппета TicketForm (чтобы при обновлении не слетело), понаписал в ней вот это:
Так нормально? По феншую? Или есть более джедайский путь?
                    А вот ещё такой момент:
Через форму создания надо сохранять и твшки, но некоторые tv-шки обязательны.
Поэтому я пошёл таким путём: создал копию сниппета TicketForm (чтобы при обновлении не слетело), понаписал в ней вот это:
/* ... */
$requiredTvs = (!empty($scriptProperties['requiredTvs'])) ? explode(',', $scriptProperties['requiredTvs']) : array();
/* ... */
	case 'saveTicket': 
	case 'updateTicket': 
		$data = $_POST;
		$good = true;
		foreach($requiredTvs as $tv) {
			if (!$data[$tv]) {
				$data['error.'. $tv] = $modx->lexicon('field_required');
				$good = false;
			}
		}
		if ($good) {
			$output = $Tickets->saveTicket($data);
		} else {
			$output = $Tickets->getTicketForm($data);
		}
		break;
/* ... */А в плагине на OnDocFormSave уже без проверок сохраняю тв-шки.Так нормально? По феншую? Или есть более джедайский путь?
                Да, нормально.
Можно через плагин на событие OnBeforeDocFormSave, но это сложнее и выгоды нет.
                    Можно через плагин на событие OnBeforeDocFormSave, но это сложнее и выгоды нет.
                Да просто через плагин не понятно как показывать ошибки в форме, поэтому решил через сниппет.
Спасибо большое!
                    Спасибо большое!
                А вот ещё непонятка одна…
Вот создал я тв-параметр, выставил ему требования, к примеру — «число», «минимальное значение» — 300, «разрешить десятичные» — да.
И вот почему-то я был уверен, что если сделать так:
И вот это уже реально пичалька, ибо если проверки есть только на уровне скриптов, то всю валидацию надо писать самому :-(
            
                    Вот создал я тв-параметр, выставил ему требования, к примеру — «число», «минимальное значение» — 300, «разрешить десятичные» — да.
И вот почему-то я был уверен, что если сделать так:
$result = $resource->setTVValue('tvname', 'swff');, то в $result будет ошибка. А оказывается нифига этот метод никаких таких проверок не делает и всё спокойно сохраняет, и в $result всегда приходит true. Поля проверяются на уровне javascript по ходу… И вот это уже реально пичалька, ибо если проверки есть только на уровне скриптов, то всю валидацию надо писать самому :-(
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.