protected function manageInitialState(Definition $definition)
 {
     $properties = $definition->propertiesAsArray();
     foreach ($properties as $k => $v) {
         if (!empty($v) && !in_array($k, $this->dirty_properties)) {
             array_push($this->dirty_properties, $k);
         }
     }
 }
 function getValidator()
 {
     $v = parent::getValidator();
     $v->add('required_property', 'Required')->addRule('required');
     $v->add('string_property', 'String')->addRule('string');
     $v->add('int_property', 'Integer')->addRule('numeric');
     $v->add('email_property', 'Email')->addRule('email');
     $v->add('url_property', 'URL')->addRule('url');
     $v->add('date_property', 'Date')->addRule('date');
     $v->add('datetime_property', 'DateTime')->addrule('datetime');
     return $v;
 }