/** * Add required-symbol to legend. */ protected function task_20_addRequiredSymbolToLegend() { if ($this->hasLegend()) { $fieldRules = app()['formbuilder']->getRulesForField($this->getName()); if (FormBuilderTools::existRules($fieldRules)) { if (is_string($fieldRules)) { $fieldRules = explode('|', $fieldRules); } if (array_search('required', $fieldRules) !== false) { $this->legend($this->getLegend() . '<sup>*</sup>'); } } } }
/** * Applies laravel-validation-rules to properties of this object. * */ private function applyRules() { if (FormBuilderTools::existRules($this->rules)) { // Format the laravel-rules-array. $rules = FormBuilderTools::explodeRules($this->rules); foreach ($rules as $rule => $parameters) { switch ($rule) { case 'accepted': case 'required': $this->attrRequired = true; break; case 'not_numeric': $this->attrPattern = '\\D+'; break; case 'url': case 'active_url': $this->attrType = 'url'; break; case 'alpha': $this->attrPattern = '[a-zA-Z]+'; break; case 'alpha_dash': $this->attrPattern = '[a-zA-Z0-9_\\-]+'; break; case 'alpha_num': $this->attrPattern = '[a-zA-Z0-9]+'; break; case 'between': if ($this::TAG === 'input') { if ($this->attrType === 'number') { $this->attrMin = $parameters[0]; $this->attrMax = $parameters[1]; } else { $this->attrPattern .= '.{' . $parameters[0] . ',' . $parameters[1] . '}'; $this->attrMaxlength = $parameters[1]; } } else { if ($this::TAG === 'textarea') { $this->attrMaxlength = $parameters[1]; } } break; case 'in': $parameters = sizeof($parameters) == 1 ? $parameters[0] : '(' . join('|', $parameters) . ')'; $this->attrPattern = '^' . $parameters . '$'; break; case 'ip': //TODO break; case 'max': if ($this::TAG === 'input') { if ($this->attrType === 'number') { $this->attrMax = $parameters[0]; } else { $this->attrMaxlength = $parameters[0]; } } else { if ($this::TAG === 'textarea') { $this->attrMaxlength = $parameters[0]; } } break; case 'min': if ($this->attrType === 'number') { $this->attrMin = $parameters[0]; } else { if (isset($this->attrPattern)) { $this->attrPattern .= ".{" . $parameters[0] . ",}"; } else { $this->attrPattern = ".{" . $parameters[0] . ",}"; } } break; case 'not_in': $this->attrPattern = '(?:(?!^' . join('$|^', $parameters) . '$).)*'; break; case 'numeric': $this->attrType = 'number'; $this->attrPattern = '[+-]?\\d*\\.?\\d+'; break; case 'mimes': if (array_search('jpeg', $parameters) !== false) { array_push($parameters, 'jpg'); } $this->attrAccept = '.' . implode(',.', $parameters); break; } } } }