/**
  * @param DocumentInterface $document
  * @param Validator         $validator
  *
  * @return array
  */
 public function getValidationRules(DocumentInterface $document, Validator $validator)
 {
     $rules = [];
     if ($this->isRequired()) {
         $rules[] = 'required';
     }
     if ($this->isUnique()) {
         $table = $this->getSection()->getSectionTableName();
         if (is_null($uniqueRule = $this->getSetting('unique_rule'))) {
             $uniqueRule = 'unique::table,:field,:id,:id_field';
         }
         $replace = [':table' => $table, ':field' => $this->getDBKey(), ':id' => $document->exists ? $document->getId() : 'NULL', ':id_field' => $document->getKeyName()];
         foreach ($validator->getData() as $field => $value) {
             $replace['@' . $field] = is_array($value) ? implode(',', $value) : $value;
         }
         $uniqueRule = strtr($uniqueRule, $replace);
         $uniqueRule = preg_replace('/(\\,\\@[a-z_-]+)/', ',NULL', $uniqueRule);
         $rules[] = $uniqueRule;
     }
     if (!is_null($customRules = $this->getSetting('validation_rules'))) {
         $rules += explode('|', $customRules);
     }
     return $rules;
 }