Skip to content

XIN Rules

Stella Lee edited this page Aug 25, 2016 · 12 revisions

HOME > SETUP > DEVELOPER'S INSTRUMENT GUIDE > HOW TO CODE AN INSTRUMENT > XIN RULES

##What are XIN Rules? XIN Rules validate your input and prevent you from moving forward if you forget to fill in a required field.

i.e. If A1 is selected in question A and if A2 is selected in question B, then give examiner a break and skip question 3 and 4.

##How to use XIN Rules All elements are required if no rule is specified, unless it is part of a group.

$this->XINRegisterRule(
    "field_name1",
    array("field_name2{@}=={@}yes|maybe|sure"),
    "Required." 
);
$this->XINRegisterRule(
    "field_name", // field name on which the rule is applied
    array("field_name{@}=={@}"), // rule
    "Required.", // message
    "group_1" // group [if field is a part of a group]
);

NOTE: When adding XIN rules some elements are implicitly added to a group in NDB_BVL_Instrument.class.inc. In consequence, a group name needs to be specified when registering a rule. A group name is necessary for the following elements:

$this->addHourMinElement();  // Group name: {$fieldName}_group
$this->addTextElement();  // Group name: {$fieldName}_group
$this->addNumericElement();  // Group name:{$fieldName}_group
$this->addDateElement();  // Group name: {$fieldName}_dategroup

Field is never required

$this->XINRegisterRule(
    "field_name",
    array("field_name{@}=={@}NEVER_REQUIRED"),
    "Not required",
    "group1" 
);

Field is required based on value of another field (check for equality)

$this->XINRegisterRule(
    "field_name1",
    array("field_name2{@}=={@}yes"),
    "Required." 
);

Field is required based on value of another field (check for equality with multiple valid values)

$this->XINRegisterRule(
    "field_name1",
    array("field_name2{@}=={@}yes|maybe|sure"),
    "Required." 
);

Multiple rules applied in AND fashion

$this->XINRegisterRule(
    "field_name3",
    array("field_name1{@}=={@}yes", "field_name2{@}=={@}no"), // Use , (comma) to "AND" the rules
    "Required." 
);

Multiple rules applied in OR fashion

$this->XINRegisterRule(
    "field_name3",
    array("field_name1{@}=={@}yes|field_name2{@}=={@}yes"), // Use | (pipe) to "OR" the rules
    "Required.",
    "group1" 
);
Clone this wiki locally