maxLength = $maxLength; return $this; } /** * Set the minimum length this text must be * * @param int $minLength * @return $this */ public function minLength(int $minLength): static { $this->minLength = $minLength; return $this; } /** * Set a placeholder inside the field for the user to see. * * @param string $placeholder * @return $this */ public function placeholder(string $placeholder): static { $this->placeholder = $placeholder; return $this; } /** * Set a regex to match the text against. * * E.g: ^[a-z]+$ for testing if there are only lowercase letters. * * The $regexError shown be returned to the user when failing the regex. * * @param string $regex * @param string|null $regexError * @return $this */ public function regex(string $regex, string $regexError = null): static { $this->regex = $regex; $this->regexError = $regexError; return $this; } protected function validateField(): bool { $valid = true; // Maximum length test if ($this->maxLength > 0 && strlen($this->value) > $this->maxLength) { $valid = false; $this->errors[] = $this->getLabel() . " exceeds maximum length of " . $this->maxLength . " characters."; } // Minimum length test if ($this->minLength > 0 && strlen($this->value) < $this->minLength) { $valid = false; $this->errors[] = $this->getLabel() . " must at least be " . $this->minLength . " characters."; } // Regex test if (!is_null($this->regex) && !preg_match('/' . $this->regex . '/mu', $this->value)) { $valid = false; if (!is_null($this->regexError)) $this->errors[] = $this->regexError; else $this->errors[] = $this->getLabel() . " contains illegal characters."; } $this->valid = $valid; return $this->valid; } public function generateHtml(): string { $id = "id='".$this->getId()."'"; $name = "name='".$this->getName()."'"; $value = !is_null($this->value) ? "value='".$this->value."'" : ""; $lock = $this->lock ? "disabled" : ""; $placeholder = !is_null($this->placeholder) ? "placeholder='".$this->placeholder."'" : ""; $maxLength = $this->maxLength > 0 ? "maxlength='".$this->maxLength."'" : ""; $minLength = $this->minLength > 0 ? "minlength='".$this->minLength."'" : ""; $class = "class='".implode(" ", $this->classNames)."'"; return ""; } }