123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- <?php
- namespace crmeb\form;
- class CommonRule implements BuildInterface
- {
-
- const VALIDATE_TYPE = ['string', 'number', 'boolean', 'method', 'regexp', 'integer', 'float', 'array', 'object', 'enum', 'date', 'url', 'hex', 'email'];
-
- protected $type = '';
-
- protected $required = false;
-
- protected $pattern = '';
-
- protected $enum = [];
-
- protected $message = '';
-
- protected $fields = [];
-
- protected $trigger = 'blur';
-
- public function type(string $type)
- {
- $this->type = in_array($type, self::VALIDATE_TYPE) ? $type : null;
- if (!$this->type) {
- throw new FormValidate('验证类型错误');
- }
- return $this;
- }
-
- public function required()
- {
- $this->required = true;
- return $this;
- }
-
- public function message(string $message)
- {
- $this->message = $message;
- return $this;
- }
-
- public function getMessage()
- {
- return $this->message;
- }
-
- public function enum(array $enum)
- {
- $this->enum = $enum;
- return $this;
- }
-
- public function pattern(string $pattern)
- {
- $this->pattern = $pattern;
- return $this;
- }
-
- public function field($field, array $rule = [])
- {
- if (!in_array($this->type, ['array', 'object'])) {
- throw new BuildException('无效规则,类型只能在array或者object情况下才可设置');
- }
- if ($this->type === 'array') {
- $rules = [];
- if ($field instanceof BuildInterface) {
- $rules = $field->toArray();
- }
- $this->fields[] = $rules;
- } else {
- $rules = [];
- foreach ($rule as $item) {
- if ($item instanceof BuildInterface) {
- $rules[] = $item->toArray();
- }
- }
- $this->fields[$field] = $rules;
- }
- return $this;
- }
-
- public function toArray(): array
- {
- $data = [
- 'required' => $this->required,
- 'message' => $this->message,
- 'trigger' => $this->trigger,
- 'pattern' => $this->pattern,
- 'enum' => $this->enum,
- 'type' => $this->type
- ];
- $res = [];
- foreach ($data as $key => $value) {
- if (is_bool($value) || $value) {
- $res[$key] = $value;
- }
- }
- return $res;
- }
- }
|