Clean up Validator

This commit is contained in:
Christopher Pitt 2015-04-27 11:33:13 +12:00
parent a2d196cc4e
commit 6d19006cab

View File

@ -1,4 +1,5 @@
<?php <?php
/** /**
* This validation class handles all form and custom form validation through * This validation class handles all form and custom form validation through
* the use of Required fields. * the use of Required fields.
@ -11,7 +12,6 @@
* @subpackage validators * @subpackage validators
*/ */
abstract class Validator extends Object { abstract class Validator extends Object {
/** /**
* @var Form $form * @var Form $form
*/ */
@ -24,30 +24,38 @@ abstract class Validator extends Object {
/** /**
* @param Form $form * @param Form $form
*
* @return static
*/ */
public function setForm($form) { public function setForm($form) {
$this->form = $form; $this->form = $form;
return $this; return $this;
} }
/** /**
* @return array Errors (if any) * Returns any errors there may be.
*
* @return null|array
*/ */
public function validate(){ public function validate() {
$this->errors = null; $this->errors = null;
$this->php($this->form->getData()); $this->php($this->form->getData());
return $this->errors; return $this->errors;
} }
/** /**
* Callback to register an error on a field (Called from implementations of {@link FormField::validate}) * Callback to register an error on a field (Called from implementations of {@link FormField::validate})
* *
* @param $fieldName name of the field * @param string $fieldName name of the field
* @param $message error message to display * @param string $message error message to display
* @param $messageType optional parameter, gets loaded into the HTML class attribute in the rendered output. * @param string $messageType optional parameter, gets loaded into the HTML class attribute in the rendered output.
* See {@link getErrors()} for details. *
* See {@link getErrors()} for details.
*/ */
public function validationError($fieldName, $message, $messageType='') { public function validationError($fieldName, $message, $messageType = '') {
$this->errors[] = array( $this->errors[] = array(
'fieldName' => $fieldName, 'fieldName' => $fieldName,
'message' => $message, 'message' => $message,
@ -57,6 +65,7 @@ abstract class Validator extends Object {
/** /**
* Returns all errors found by a previous call to {@link validate()}. * Returns all errors found by a previous call to {@link validate()}.
*
* The array contains the following keys for each error: * The array contains the following keys for each error:
* - 'fieldName': the name of the FormField instance * - 'fieldName': the name of the FormField instance
* - 'message': Validation message (optionally localized) * - 'message': Validation message (optionally localized)
@ -70,28 +79,45 @@ abstract class Validator extends Object {
return $this->errors; return $this->errors;
} }
/**
* @param string $fieldName
* @param array $data
*/
public function requireField($fieldName, $data) { public function requireField($fieldName, $data) {
if(is_array($data[$fieldName]) && count($data[$fieldName])) { if(is_array($data[$fieldName]) && count($data[$fieldName])) {
foreach($data[$fieldName] as $componentkey => $componentVal){ foreach($data[$fieldName] as $componentKey => $componentValue) {
if(!strlen($componentVal)) { if(!strlen($componentValue)) {
$this->validationError($fieldName, "$fieldName $componentkey is required", "required"); $this->validationError(
$fieldName,
sprintf('%s %s is required', $fieldName, $componentKey),
'required'
);
} }
} }
} else if(!strlen($data[$fieldName])) { } else if(!strlen($data[$fieldName])) {
$this->validationError($fieldName, "$fieldName is required", "required"); $this->validationError(
$fieldName,
sprintf('%s is required', $fieldName),
'required'
);
} }
} }
/** /**
* Returns true if the named field is "required". * Returns true if the named field is "required".
*
* Used by FormField to return a value for FormField::Required(), to do things like show *s on the form template. * Used by FormField to return a value for FormField::Required(), to do things like show *s on the form template.
*
* By default, it always returns false. * By default, it always returns false.
*/ */
public function fieldIsRequired($fieldName) { public function fieldIsRequired($fieldName) {
return false; return false;
} }
/**
* @param array $data
*
* @return mixed
*/
abstract public function php($data); abstract public function php($data);
} }