fix: 修改别名时的 info 提示

This commit is contained in:
邹景立 2025-03-21 18:06:36 +08:00
parent a3d3c11505
commit 0c29dc2d42

View File

@ -50,20 +50,22 @@ class ValidateHelper extends Helper
$input = $this->app->request->$type(); $input = $this->app->request->$type();
} }
[$data, $rule, $info] = [[], [], []]; [$data, $rule, $info] = [[], [], []];
foreach ($rules as $name => $message) if (is_numeric($name)) { foreach ($rules as $name => $message) {
[$name, $alias] = explode('#', $message . '#'); if (is_numeric($name)) {
$data[$name] = $input[($alias ?: $name)] ?? null; [$name, $alias] = explode('#', $message . '#');
} elseif (strpos($name, '.') === false) { $data[$name] = $input[$alias ?: $name] ?? null;
$data[$name] = $message; } elseif (strpos($name, '.') === false) {
} elseif (preg_match('|^(.*?)\.(.*?)#(.*?)#?$|', $name . '#', $matches)) { $data[$name] = $message;
[, $_key, $_rule, $alias] = $matches; } elseif (preg_match('|^(.*?)\.(.*?)#(.*?)#?$|', $name . '#', $matches)) {
if (in_array($_rule, ['value', 'default'])) { [, $_key, $_rule, $alias] = $matches;
if ($_rule === 'value') $data[$_key] = $message; if (in_array($_rule, ['value', 'default'])) {
elseif ($_rule === 'default') $data[$_key] = $input[($alias ?: $_key)] ?? $message; if ($_rule === 'value') $data[$_key] = $message;
} else { elseif ($_rule === 'default') $data[$_key] = $input[$alias ?: $_key] ?? $message;
$info[explode(':', $name)[0]] = $message; } else {
$data[$_key] = $data[$_key] ?? ($input[($alias ?: $_key)] ?? null); $info[explode(':', $_key . '.' . $_rule)[0]] = $message;
$rule[$_key] = isset($rule[$_key]) ? ($rule[$_key] . '|' . $_rule) : $_rule; $data[$_key] = $data[$_key] ?? ($input[$alias ?: $_key] ?? null);
$rule[$_key] = isset($rule[$_key]) ? $rule[$_key] . '|' . $_rule : $_rule;
}
} }
} }
$validate = new Validate(); $validate = new Validate();