['required', 'string', 'min:1', 'max:140'], Config::TYPE_TEXT => ['required', 'string'], Config::TYPE_AMOUNT => ['required', 'numeric', 'min:0.01', 'regex:/^\d+(\.\d{1,2})?$/'], Config::TYPE_NUMBER => ['required', 'integer', 'min:0'], // Config::TYPE_RADIO => ['required', 'integer', 'min:0'], // Config::TYPE_CHECKBOX => ['required', 'array', 'min:1'], Config::TYPE_PERCENTAGE => ['required', 'numeric', 'min:0.0001', 'max:1', 'regex:/^\d+(\.\d{1,4})?$/'], ]; public function getRule() { if (Config::TYPE_RADIO == $this->type) { $val = []; foreach ($this->data as $value) $val[] = $value['value']; $val = implode(',', $val); return ['val' => ['required', 'integer', "in:{$val}"]]; } if (Config::TYPE_CHECKBOX == $this->type) { $val = []; foreach ($this->data as $value) $val[] = $value['value']; $val = implode(',', $val); return [ 'val' => ['required', 'array', 'min:1'], 'val.*' => ['required', 'integer', "in:{$val}"] ]; } return ['val' => Config::$rules[$this->type]]; } public static function groups() { return [ static::GROUP_BASIC, static::GROUP_USER, ]; } protected function getDataAttribute($value) { return json_decode($value, true); } }