Пример #1
0
 /**
  * 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>');
             }
         }
     }
 }
Пример #2
0
 /**
  * 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;
             }
         }
     }
 }