public static function replaceValidators(sfForm $form) { foreach ($form->getWidgetSchema()->getFields() as $name => $widget) { if ($widget instanceof mtWidgetFormInputDate) { $form->setValidator($name, self::getDateValidator()); } elseif ($widget instanceof sfWidgetFormFilterDate) { $form->getValidator($name)->setOption("from_date", self::getDateValidator(array("required" => false))); $form->getValidator($name)->setOption("to_date", self::getDateValidator(array("required" => false))); } if ($name == "attachment") { $form->setValidator($name, new sfValidatorFile(array("required" => false, "path" => sfConfig::get("sf_upload_dir")))); } elseif ($name == "email") { $form->setValidator($name, new sfValidatorEmail()); } } }
/** * Replacing validators with their up-to-date equivalent from an embedded form. * * @param sfForm $form Form instance on which to replace validators * * @return sfValidatorSchema */ protected function correctValidators($form) { foreach ($form->getEmbeddedForms() as $field => $embed) { if ($form->getValidator($field) instanceof sfValidatorSchema) { foreach ($embed->getValidatorSchema()->getFields() as $name => $validator) { if (!$form->getValidator($field)->offsetExists($name)) { $embed->getValidatorSchema()->offsetUnset($name); } } $form->setValidator($field, $this->correctValidators($embed)); } } return $form->getValidatorSchema(); }
public function getFormFieldContainerClass(sfForm $form, $name) { $class = array('form-element'); $attributes = array(); if (isset($form[$name])) { $widget = $form->getWidget($name); $validator = $form->getValidator($name); switch (true) { case $validator->getOption('required') === true: $class[] = 'required'; break; default: $class[] = sfInflector::underscore(str_replace('sfWidgetForm', '', get_class($widget))); break; } } return implode(' ', $class); }