Обязательность поля "content" в Тикетах

Василий, вот столкнулся здесь…

В общем есть необходимость сделать поле «content» в тикетах не обязательным (не спрашивай зачем :-)).
И вот я не пойму — в методе тикета используется стандартный процессор resource/create, этот же процессор, как я понимаю, срабатывает и при создании докуменов из админки. Но вот из админки поле «контент» не обязательно, а с фронта — обязательно.
Почему так? Куда копать?
Алексей Карташов
27 апреля 2013, 16:17
modx.pro
1 218
0

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

Василий Наумкин
27 апреля 2013, 20:26
0
Тикет — это CRC, у него свой процессор, который вызывается стандартным. Проверка вот тут.

Можно просто сделать в форме скрытое поле content с любым символом — и будет работать.
    Алексей Карташов
    27 апреля 2013, 20:46
    0
    Ага, понял, спасибо!
    А вот ещё такой момент:
    Через форму создания надо сохранять и твшки, но некоторые 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 уже без проверок сохраняю тв-шки.

    Так нормально? По феншую? Или есть более джедайский путь?
      Василий Наумкин
      27 апреля 2013, 20:51
      0
      Да, нормально.

      Можно через плагин на событие OnBeforeDocFormSave, но это сложнее и выгоды нет.
        Алексей Карташов
        28 апреля 2013, 01:00
        0
        Да просто через плагин не понятно как показывать ошибки в форме, поэтому решил через сниппет.

        Спасибо большое!
          Алексей Карташов
          28 апреля 2013, 03:36
          0
          А вот ещё непонятка одна…
          Вот создал я тв-параметр, выставил ему требования, к примеру — «число», «минимальное значение» — 300, «разрешить десятичные» — да.

          И вот почему-то я был уверен, что если сделать так:
          $result = $resource->setTVValue('tvname', 'swff');
          , то в $result будет ошибка. А оказывается нифига этот метод никаких таких проверок не делает и всё спокойно сохраняет, и в $result всегда приходит true. Поля проверяются на уровне javascript по ходу…

          И вот это уже реально пичалька, ибо если проверки есть только на уровне скриптов, то всю валидацию надо писать самому :-(

      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5