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();
}
[$data, $rule, $info] = [[], [], []];
foreach ($rules as $name => $message) if (is_numeric($name)) {
[$name, $alias] = explode('#', $message . '#');
$data[$name] = $input[($alias ?: $name)] ?? null;
} elseif (strpos($name, '.') === false) {
$data[$name] = $message;
} elseif (preg_match('|^(.*?)\.(.*?)#(.*?)#?$|', $name . '#', $matches)) {
[, $_key, $_rule, $alias] = $matches;
if (in_array($_rule, ['value', 'default'])) {
if ($_rule === 'value') $data[$_key] = $message;
elseif ($_rule === 'default') $data[$_key] = $input[($alias ?: $_key)] ?? $message;
} else {
$info[explode(':', $name)[0]] = $message;
$data[$_key] = $data[$_key] ?? ($input[($alias ?: $_key)] ?? null);
$rule[$_key] = isset($rule[$_key]) ? ($rule[$_key] . '|' . $_rule) : $_rule;
foreach ($rules as $name => $message) {
if (is_numeric($name)) {
[$name, $alias] = explode('#', $message . '#');
$data[$name] = $input[$alias ?: $name] ?? null;
} elseif (strpos($name, '.') === false) {
$data[$name] = $message;
} elseif (preg_match('|^(.*?)\.(.*?)#(.*?)#?$|', $name . '#', $matches)) {
[, $_key, $_rule, $alias] = $matches;
if (in_array($_rule, ['value', 'default'])) {
if ($_rule === 'value') $data[$_key] = $message;
elseif ($_rule === 'default') $data[$_key] = $input[$alias ?: $_key] ?? $message;
} else {
$info[explode(':', $_key . '.' . $_rule)[0]] = $message;
$data[$_key] = $data[$_key] ?? ($input[$alias ?: $_key] ?? null);
$rule[$_key] = isset($rule[$_key]) ? $rule[$_key] . '|' . $_rule : $_rule;
}
}
}
$validate = new Validate();