!48 优化插件伪静态规则写入配置

Merge pull request !48 from 七彩枫叶/N/A
This commit is contained in:
meystack
2023-08-26 07:05:22 +00:00
committed by Gitee

View File

@@ -309,15 +309,24 @@ class Plugin extends AdminController
if (request()->isPost()) {
$post['extends'] = input('extends');
$post['rewrite'] = input('rewrite');
foreach ($post['rewrite'] as $kk => $vv) {
if ($kk[0] != '/') return $this->error('伪静态变量名称“' . $kk . '" 必须以“/”开头');
$post['rewrite'][$kk] = str_replace('\\', '/', trim($vv, '/\\'));
$value = explode('/', $post['rewrite'][$kk]);
if (count($value) < 2) {
return $this->error('伪静态不符合规则');
}
if (strtoupper($value[count($value) - 2][0]) !== $value[count($value) - 2][0]) {
return $this->error('控制器首字母必须大写');
if($post['rewrite']) {
foreach ($post['rewrite'] as $key => $value){
if (!str_starts_with($key, '/')) return $this->error('伪静态变量名称“' . $key . '" 必须以“/”开头');
$value = explode('/', str_replace('\\', '/', trim($value, '/\\')));
if (count($value) < 2) {
return $this->error("变量名称 {$key} 的 变量值中 伪静态不符合规则,变量值至少包含控制器和方法");
}
$method = array_pop($value);
if (!class_exists('app\\index\\controller\\' . implode('\\', $value))) {
return $this->error("变量名称 {$key} 的 变量值中 控制器不存在,请再次检查确认");
}
if (!method_exists('app\\index\\controller\\' . implode('\\', $value), $method)) {
return $this->error("变量名称 {$key} 的 变量值中 指定的方法在控制器中 {$method} 不存在,请再次检查确认");
}
if (ucfirst(end($value)) != end($value)) {
return $this->error("变量名称 {$key} 的控制器首字母必须大写");
}
$post["rewrite"][$key] = implode('/', $value).'/'.$method;
}
}
$config = array_merge($config, $post);