refactor: 文章分类新增/更新添加图片及唯一标识

This commit is contained in:
2025-04-30 10:10:26 +08:00
parent e889b1b1c7
commit 7b972f73b3
3 changed files with 20 additions and 2 deletions

View File

@@ -76,13 +76,18 @@ class ArticleCategory
public function save() public function save()
{ {
$post = request()->post([ $post = request()->post([
'unique_label',
'name', 'name',
'icon',
'pid', 'pid',
'sort' => 0, 'sort' => 0,
'is_show' => 1 'is_show' => 1
]); ]);
$data = array_merge($post, ['language_id' => request()->lang_id]); $data = array_merge($post, [
'language_id' => request()->lang_id,
'unique_label' => $post['unique_label'] ?? uniqid('BANNER_')
]);
$valiate = new ArticleCategoryValidate; $valiate = new ArticleCategoryValidate;
if (!$valiate->scene('add')->check($data)) { if (!$valiate->scene('add')->check($data)) {
return error($valiate->getError()); return error($valiate->getError());
@@ -101,6 +106,7 @@ class ArticleCategory
$id = request()->param('id'); $id = request()->param('id');
$put = request()->put([ $put = request()->put([
'name', 'name',
'icon',
'pid', 'pid',
'sort', 'sort',
'is_show' 'is_show'
@@ -108,7 +114,7 @@ class ArticleCategory
$data = array_merge($put, ['language_id' => request()->lang_id]); $data = array_merge($put, ['language_id' => request()->lang_id]);
$valiate = new ArticleCategoryValidate; $valiate = new ArticleCategoryValidate;
if (!$valiate->check(array_merge($data, ['id' => $id]))) { if (!$valiate->scene('edit')->check(array_merge($data, ['id' => $id]))) {
return error($valiate->getError()); return error($valiate->getError());
} }

View File

@@ -19,7 +19,9 @@ class ArticleCategoryValidate extends Validate
'id' => 'require|integer', 'id' => 'require|integer',
'language_id' => 'require|integer', 'language_id' => 'require|integer',
'name' => 'require|unique:article_category,name^language_id|max:64', 'name' => 'require|unique:article_category,name^language_id|max:64',
'icon' => 'max:125',
'pid' => 'integer|different:id|checkPidNotBeChildren', // 验证pid 'pid' => 'integer|different:id|checkPidNotBeChildren', // 验证pid
'unique_label' => 'require|max:64',
'sort' => 'require|integer', 'sort' => 'require|integer',
'is_show' => 'require|in:0,1', 'is_show' => 'require|in:0,1',
'seo_title' => 'max:255', 'seo_title' => 'max:255',
@@ -41,9 +43,12 @@ class ArticleCategoryValidate extends Validate
'name.require' => '分类名称不能为空', 'name.require' => '分类名称不能为空',
'name.unique' => '分类名称已存在', 'name.unique' => '分类名称已存在',
'name.max' => '分类名称最多64个字符', 'name.max' => '分类名称最多64个字符',
'icon.max' => '分类图片最多125个字符',
'pid.integer' => '父级分类ID必须为整数', 'pid.integer' => '父级分类ID必须为整数',
'pid.different' => '父级分类ID不能为自身', 'pid.different' => '父级分类ID不能为自身',
'pid.checkPidNotBeChildren' => '父级分类不能为自身或自身的子分类', 'pid.checkPidNotBeChildren' => '父级分类不能为自身或自身的子分类',
'unique_label.require' => '分类唯一标识不能为空',
'unique_label.max' => '分类唯一标识最多64个字符',
'sort.require' => '排序不能为空', 'sort.require' => '排序不能为空',
'sort.integer' => '排序必须为整数', 'sort.integer' => '排序必须为整数',
'is_show.require' => '是否显示不能为空', 'is_show.require' => '是否显示不能为空',
@@ -84,4 +89,10 @@ class ArticleCategoryValidate extends Validate
{ {
$this->remove('id', 'require|integer')->remove('pid', 'different|checkPidNotBeChildren'); $this->remove('id', 'require|integer')->remove('pid', 'different|checkPidNotBeChildren');
} }
// 更新分类验证场景
protected function sceneEdit()
{
$this->remove('unique_label', 'require|max:64');
}
} }

View File

@@ -19,6 +19,7 @@ class ArticleCategoryBaseModel extends BaseModel
'id' => 'int', 'id' => 'int',
'language_id' => 'int', 'language_id' => 'int',
'pid' => 'int', 'pid' => 'int',
'unique_label' => 'string',
'name' => 'string', 'name' => 'string',
'short_name' => 'string', 'short_name' => 'string',
'icon' => 'string', 'icon' => 'string',