/** * @return ZenValidator */ public function getCMSValidator() { // create any validation contrain we need $validator = ZenValidator::create(); foreach ($this->config()->get('validation') as $field => $validation) { // protection against misconfiguration: is this field actually shown? no? okay, don't validate. if (in_array($field, $this->config()->hideCMSInputs)) { // just required? if (array_key_exists('required', $validation)) { $validator->setConstraint($field, Constraint_require::create()->setMessage('This field is required.')); } // min length? if (array_key_exists('minLength', $validation)) { $validator->setConstraint($field, Constraint_length::create('min', $validation['minLength'])->setMessage(sprintf('Please enter at least %d characters.', $validation['minLength']))); } // max length? if (array_key_exists('maxLength', $validation)) { $validator->setConstraint($field, Constraint_length::create('max', $validation['maxLength'])->setMessage(sprintf('Please enter maximal %d characters.', $validation['maxLength']))); } // width? if (array_key_exists('width', $validation)) { $validator->setConstraint($field, Constraint_dimension::create('width', $validation['width'])->setMessage(sprintf('Please upload an image with an width of %s pixel.', $validation['width']))); } // height? if (array_key_exists('height', $validation)) { $validator->setConstraint($field, Constraint_dimension::create('height', $validation['height'])->setMessage(sprintf('Please upload an image with an height of %s pixel.', $validation['height']))); } } } $this->extend('updateCMSValidator', $validator); return $validator; }
public function testSetGetRemoveContraints() { $zv = $this->Form()->getValidator(); // set/get $zv->setConstraints(array('Title' => array(Constraint_required::create(), Constraint_length::create('min', 4)), 'Subtitle' => Constraint_required::create())); $this->assertTrue(count($zv->getConstraints('Title')) == 2); $this->assertTrue(count($zv->getConstraints('Subtitle')) == 1); // remove $zv->removeConstraints('Title'); $zv->removeConstraints('Subtitle'); $this->assertTrue(count($zv->getConstraints('Title')) == 0); $this->assertTrue(count($zv->getConstraints('Subtitle')) == 0); }
public function testRangeLength() { $zv = $this->Form()->getValidator(); $zv->setConstraint('Title', Constraint_length::create('range', 5, 10)); // test attributes $field = $zv->getConstraint('Title', 'Constraint_length')->getField(); $this->assertTrue($field->getAttribute('data-parsley-length') == '[5,10]'); // test valid $data['Title'] = 'Some Text'; $zv->php($data); $this->assertEmpty($zv->getErrors()); // test invalid $data['Title'] = 'Some'; $zv->php($data); $errors = $zv->getErrors(); $this->assertTrue($errors[0]['fieldName'] == 'Title'); }
function __construct(Controller $controller, $name) { $this->currController = $controller; $fields = new FieldList(array(TextField::create("FirstName")->setTitle(_t("ContactPage.FIRSTNAME", "First Name"))->addPlaceholder(_t("ContactPage.FIRSTNAMEPLACEHOLDER", "Your First Name"))->setMaxLength(55)->setAttribute("autocomplete", "off"), TextField::create("LastName")->setTitle(_t("ContactPage.LASTNAME", "Last Name"))->addPlaceholder(_t("ContactPage.LASTNAMEPLACEHOLDER", "Your Last Name"))->setMaxLength(55)->setAttribute("autocomplete", "off"), EmailField::create("Email")->setTitle(_t("ContactPage.EMAIL", "Email"))->addPlaceholder(_t("ContactPage.EMAILPLACEHOLDER", "Your Email address"))->setMaxLength(55)->setAttribute("autocomplete", "off"), TextField::create("Phone")->setTitle(_t("ContactPage.PHONE", "Phone"))->addPlaceholder(_t("ContactPage.PHONEPLACEHOLDER", "Your Phone number"))->setMaxLength(55)->setAttribute("autocomplete", "off"), TextareaField::create("Description")->setTitle(_t("ContactPage.DESCRIPTION", "Message"))->addPlaceholder(_t("ContactPage.DESCRIPTIONPLACEHOLDER", "Your Message for us"))->setRows(6), TextField::create("Url")->setTitle("")->addPlaceholder(_t("ContactPage.URL", "Url"))->setMaxLength(55)->setAttribute("autocomplete", "off"), TextareaField::create("Comment")->setTitle("")->addPlaceholder(_t("ContactPage.COMMENT", "Comment"))->setRows(6), HiddenField::create("Ref")->setValue($controller->Title), HiddenField::create("Locale")->setValue($controller->Locale))); $actions = new FieldList(FormAction::create('dosave', _t("ContactPage.APPLY", "Send"))->setStyle("success")); $validator = ZenValidator::create(); $validator->addRequiredFields(array('FirstName', 'LastName', 'Email', 'Description')); $validator->setConstraint('Email', Constraint_type::create('email')); $validator->setConstraint('Description', Constraint_length::create('min', 10)); parent::__construct($controller, $name, $fields, $actions, $validator); if ($this->extend('updateFields', $fields) !== null) { $this->setFields($fields); } if ($this->extend('updateActions', $actions) !== null) { $this->setActions($actions); } // if($this->extend('updateValidator', $requiredFields) !== null) {$this->setValidator($requiredFields);} $oldData = Session::get("FormInfo.{$this->FormName()}.data"); if ($oldData && (is_array($oldData) || is_object($oldData))) { $this->loadDataFrom($oldData); } $this->extend('updateContactInquiryForm', $this); }