Jump to main content Jump to doc navigation

What Does the Rule Do?

This rule checks to see if another object exists. If that object doesn't exist, then the validation on this current object fails. The object can be specified by stating the "classKey" and "pk" values in the rule schema definition.

Using the Rule

First, our model:

<model package="test" baseClass="xPDOObject" platform="mysql"
       defaultEngine="MyISAM" tablePrefix="test_">
    <object class="myTest" table="test" extends="xPDOSimpleObject">
        <field key="name" dbtype="varchar" precision="255"
               phptype="string" default="" null="false" />

        <validation>
            <rule field="name"
                  name="chunkExists"
                  type="xPDOValidationRule"
                  rule="xPDOObjectExistsValidationRule"
                  pk="12"
                  classKey="modChunk"
                  message="The Chunk does not exist, so this object cannot be saved."
             />
        </validation>
    </object>
</model>

From there, go ahead and generate the model from the XML schema. And now in a Snippet we'll call Test:

$output = '';
$modx->addPackage('test','/path/to/my/test/model/','test_');
$obj = $modx->newObject('myTest');
$validator = $obj->getValidator();
if ($validator->validate() == false) {
    $messages = $validator->getMessages();
    foreach ($messages as $errorMsg) {
        $output .= $errorMsg['message'];
    }
}

This will display:

The Chunk does not exist, so this object cannot be saved.

See Also

  1. xPDOForeignKeyConstraint
  2. xPDOMaxLengthValidationRule
  3. xPDOMaxValueValidationRule
  4. xPDOMinLengthValidationRule
  5. xPDOMinValueValidationRule
  6. xPDOObjectExistsValidationRule