action = $acton; return $this; } public function method($method) { $this->method = $method; return $this; } public function formId($formId) { $this->formId = $formId; return $this; } public function enctype($enctype ="multipart/form-data") { $this->enctype = $enctype; return $this; } public function id($id) { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'id' => sprintf('id="%s"', $id), ]); return $this; } public function class($class='', $labelClass = '', $inlineClass = '') { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'class' => $class, 'labelClass' => $labelClass, 'inlineClass' => $inlineClass, ]); return $this; } public function options(array $options) { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'options' => $options, ]); return $this; } public function default($value) { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'default' => $value, ]); return $this; } public function disabled() { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'disabled' => '', ]); return $this; } public function placeholder($content) { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'placeholder' => 'placeholder='.$content, ]); return $this; } public function readonly() { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'readonly' => 'readonly', ]); return $this; } public function render() { $form = sprintf('
', $this->formId, $this->formId); foreach ($this->fields as $field) { $form .= sprintf($this->baseField(), $field['labelClass'] ?? '', $field['label'], $field['inlineClass'] ?? '', $this->{$field['type'].'Field'}($field)) ; } return $form . $this->btn. '
'; } public function append($append) { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'append' => $append, ]); return $this; } public function __call($method, $arguments) { // TODO: Implement __call() method. $this->name = $arguments[0] ?? ''; $label = $arguments[1] ?? ''; $this->fields[$this->name] = [ 'name' => $this->name, 'type' => $method, 'label' => $label, 'inline' => false, ]; return $this; } protected function inline() { $this->fields[] = array_merge($this->fields, [ 'inline' => true, ]); return $this; } private function baseField() { return '
%s
'; } /** * form btn * * @time 2019年12月06日 * @param $filter * @param string $position * @return string */ public function formBtn($filter, $position = 'text-right') { $this->btn = sprintf('
', $position, $filter); return $this; } public function verify($rule, $equalTo = []) { if (empty($equalTo)) { $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'verify' => sprintf('lay-verType="tips" lay-verify="%s"', $rule), ]); } else { [$id, $msg] = $equalTo; $this->fields[$this->name] = array_merge($this->fields[$this->name], [ 'verify' => sprintf(' lay-verType="tips" lay-verify="%s" lay-equalTo="#%s" lay-equalToText="%s" ', $rule, $id, $msg), ]); } return $this; } private function textField($field) { return sprintf('', $field['name'], $field['id'] ?? '', $field['class'] ?? '', $field['default'] ?? '', $field['readonly'] ?? '', $field['placeholder'] ?? '', $field['disabled'] ?? '', $field['verify'] ?? '' ); } private function selectField($field) { $select = sprintf(''; } private function passwordField($field) { return sprintf('', $field['name'], $field['id'] ?? '', $field['verify'] ?? '', $field['placeholder'] ?? '' ); } private function radioField() {} private function textareaField() {} private function imageField() {} }