Skip to content
  1. Extras
  2. Tickets
  3. TicketFormit

FormIt integration

With FormIt installed, validation works in TicketForm and TicketComments via &validate and &customValidators. FormIt is not a package dependency.

Rules

  • Errors render in <span class="error"></span> next to the field or in #field_name-error
  • FormIt rules: FormIt docs
  • For comments, validate field text

Field markup:

fenom
<label for="ticket-pagetitle">{$_modx->lexicon('ticket_pagetitle')}</label>
<input type="text" name="pagetitle" id="ticket-pagetitle" />
<span class="error"></span>
modx
<label for="ticket-pagetitle">[[%ticket_pagetitle]]</label>
<input type="text" name="pagetitle" id="ticket-pagetitle" />
<span class="error"></span>

Custom validator

Snippet mycensore:

php
<?php

$success = !preg_match_all('~(bad|words)~ui', $value, $match);
if (!$success) {
  $validator->addError($key, 'Forbidden words in text');
}
return (bool)$success;

TicketForm

fenom
{'!TicketForm' | snippet : [
  'customValidators' => 'mycensore',
  'validate' => 'pagetitle:required:minLength=^3^,content:minLength=^50^:mycensore',
  'content.vTextMinLength' => 'Content must be at least 50 characters',
  'tplFormCreate' => 'tpl.myTicket',
]}
modx
[[!TicketForm?
  &customValidators=`mycensore`
  &validate=`pagetitle:required:minLength=^3^,content:minLength=^50^:mycensore`
  &content.vTextMinLength=`Content must be at least 50 characters`
  &tplFormCreate=`tpl.myTicket`
]]

TicketComments

fenom
{'!TicketComments' | snippet : [
  'allowGuest' => 1,
  'autoPublishGuest' => 0,
  'customValidators' => 'mycensore',
  'validate' => 'text:minLength=^20^:mycensore',
  'text.vTextMinLength' => 'Comment must be at least 20 characters',
]}
modx
[[!TicketComments?
  &allowGuest=`1`
  &autoPublishGuest=`0`
  &customValidators=`mycensore`
  &validate=`text:minLength=^20^:mycensore`
  &text.vTextMinLength=`Comment must be at least 20 characters`
]]