Sfoglia il codice sorgente

修复saving与saved等上传或更新引起的BUG

(cherry picked from commit 332982c5f1f3e58fd42ef9b4f9d2985d59bdb376)
moshaorui 6 giorni fa
parent
commit
43c3714cb0

+ 11 - 9
app/Admin/Controllers/BaseProductController.php

@@ -176,15 +176,17 @@ class BaseProductController extends AdminController
             });
             //保存前回调
             $form->saving(function ($form) {
-                //检查sku是否重复
-                $baseProduct = new BaseProduct();
-                if ($form->isCreating()) {
-                    $count = $baseProduct->model()->where('sku', $form->sku)->count();
-                } else {
-                    $count = $baseProduct->model()->where('sku', $form->sku)->where('id', '!=', $form->getKey())->count();
-                }
-                if ($count > 0) {
-                    return $form->response()->error('sku already exists');
+                if ($form->input('title')) {
+                    //检查sku是否重复
+                    $baseProduct = new BaseProduct();
+                    if ($form->isCreating()) {
+                        $count = $baseProduct->model()->where('sku', $form->sku)->count();
+                    } else {
+                        $count = $baseProduct->model()->where('sku', $form->sku)->where('id', '!=', $form->getKey())->count();
+                    }
+                    if ($count > 0) {
+                        return $form->response()->error('sku already exists');
+                    }
                 }
             });
         });

+ 8 - 6
app/Admin/Controllers/BaseVideoController.php

@@ -145,12 +145,14 @@ class BaseVideoController extends AdminController
                 ->rules('numeric');
             $form->switch('enabled')->default(1);
             $form->saving(function (Form $form) {
-                //替换youtube URL
-                if (strpos($form->video_url, '<iframe') !== false) {
-                    // 使用正则表达式提取 src 属性的值
-                    if (preg_match('/<iframe[^>]+src="([^"]+)"/', $form->video_url, $matches)) {
-                        $src = $matches[1];
-                        $form->video_url = $src;
+                if ($form->input('title')) {
+                    //替换youtube URL
+                    if (strpos($form->video_url, '<iframe') !== false) {
+                        // 使用正则表达式提取 src 属性的值
+                        if (preg_match('/<iframe[^>]+src="([^"]+)"/', $form->video_url, $matches)) {
+                            $src = $matches[1];
+                            $form->video_url = $src;
+                        }
                     }
                 }
             });

+ 11 - 7
app/Admin/Controllers/DistAdminDistributorController.php

@@ -133,16 +133,20 @@ class DistAdminDistributorController extends AdminController
             $form->hidden('country_alpha_2');
             //保存前回调
             $form->saving(function (Form $form) {
-                $form->country_alpha_2 = BaseIso3166::getAlpha2($form->country);
+                if ($form->input('client_code')) {
+                    $form->country_alpha_2 = BaseIso3166::getAlpha2($form->country);
+                }
             });
             //保存后回调
             $form->saved(function (Form $form, $result) {
-                if ($form->isCreating()) {
-                    //创建后创建默认分类
-                    $newId = $form->getKey();
-                    //初始化分销商
-                    DistAdminDistributor::initDist($newId);
-                    return $form->response()->success(admin_trans_label('distributor_create_success'));
+                if ($form->input('client_code')) {
+                    if ($form->isCreating()) {
+                        //创建后创建默认分类
+                        $newId = $form->getKey();
+                        //初始化分销商
+                        DistAdminDistributor::initDist($newId);
+                        return $form->response()->success(admin_trans_label('distributor_create_success'));
+                    }
                 }
             });
         });

+ 23 - 19
app/Admin/Controllers/DistAdminUserController.php

@@ -117,30 +117,34 @@ class DistAdminUserController extends AdminController
             $form->switch('enabled')->default(1);
             //保存前回调
             $form->saving(function (Form $form) {
-                //判断用户名是否重复
-                $count = DistAdminUser::findCountByUsername($form->getKey(), $form->username);
-                if ($count > 0) {
-                    return $form->response()->error('Username already exists');
-                }
-                if($form->isCreating() && ($form->password === null || $form->password === '')) {
-                    return $form->response()->error('Password cannot be empty');
-                }
-                //密码加密
-                if ($form->password) {
-                    $form->password = bcrypt($form->password);
-                } else {
-                    $form->deleteInput('password');
+                if ($form->input('username')) {
+                    //判断用户名是否重复
+                    $count = DistAdminUser::findCountByUsername($form->getKey(), $form->username);
+                    if ($count > 0) {
+                        return $form->response()->error('Username already exists');
+                    }
+                    if($form->isCreating() && ($form->password === null || $form->password === '')) {
+                        return $form->response()->error('Password cannot be empty');
+                    }
+                    //密码加密
+                    if ($form->password) {
+                        $form->password = bcrypt($form->password);
+                    } else {
+                        $form->deleteInput('password');
+                    }
                 }
             });
             //保存后回调
             $form->saved(function (Form $form, $result) {
-                if ($form->isCreating()) {
-                    //添加角色
-                    $newId = $form->getKey();
-                    if (! $newId) {
-                        return $form->response()->error('Failed to save data');
+                if ($form->input('username')) {
+                    if ($form->isCreating()) {
+                        //添加角色
+                        $newId = $form->getKey();
+                        if (! $newId) {
+                            return $form->response()->error('Failed to save data');
+                        }
+                        DistAdminUser::addRoleUser($newId, config('dictionary.dist_role_id'));//分销商角色ID 2
                     }
-                    DistAdminUser::addRoleUser($newId, config('dictionary.dist_role_id'));//分销商角色ID 2
                 }
             });
         });

+ 18 - 14
app/Admin/Controllers/DistSiteController.php

@@ -169,12 +169,14 @@ class DistSiteController extends AdminController
 
             //保存前回调
             $form->saving(function (Form $form) {
-                if (!$form->isCreating()) {
-                    //如果appearance_id有变化,则更新模版与变量
-                    if ($form->model()->appearance_id != $form->input('appearance_id')) {
-                        $id = $form->model()->id;
-                        //更新模版与变量
-                        DistAppearance::switchTheme($form->input('appearance_id'), $id);
+                if ($form->input('site_name')) {
+                    if (!$form->isCreating()) {
+                        //如果appearance_id有变化,则更新模版与变量
+                        if ($form->model()->appearance_id != $form->input('appearance_id')) {
+                            $id = $form->model()->id;
+                            //更新模版与变量
+                            DistAppearance::switchTheme($form->input('appearance_id'), $id);
+                        }
                     }
                 }
             });
@@ -182,15 +184,17 @@ class DistSiteController extends AdminController
             //
             //保存后回调
             $form->saved(function (Form $form, $result) {
-                $newId = $form->getKey();
-                if ($form->isCreating()) {
-                    //创建后创建默认分类
-                    $appearanceId = $form->input('appearance_id');
-                    //更新模版与变量
-                    DistAppearance::switchTheme($appearanceId, $newId);
+                if ($form->input('site_name')) {
+                    $newId = $form->getKey();
+                    if ($form->isCreating()) {
+                        //创建后创建默认分类
+                        $appearanceId = $form->input('appearance_id');
+                        //更新模版与变量
+                        DistAppearance::switchTheme($appearanceId, $newId);
+                    }
+                    //更新缓存
+                    DistAdminDistributor::clearCache($newId);
                 }
-                //更新缓存
-                DistAdminDistributor::clearCache($newId);
             });
 
             $form->disableDeleteButton();

+ 18 - 19
app/Distributor/Controllers/DistProductCategoryController.php

@@ -103,26 +103,25 @@ class DistProductCategoryController extends AdminDistController
             });
             // 在保存时写死dist_id
             $form->saving(function (Form $form) {
-                $form->dist_id =getDistributorId();
-
-                $id = $form->getKey();
-
-
-                //slug配置是否重复
-                $form->slug=CommonHelper::slug_fix($form->slug);
-                if ($form->slug != '') {
-                    if (DistProductCategory::isRepeatedSlug($id, $form->slug)) {
-                        //slug重复
-                        return $form->response()->error(admin_trans_label('url_repeated'));
+                if ($form->input('name')) {
+                    $form->dist_id =getDistributorId();
+                    $id = $form->getKey();
+                    //slug配置是否重复
+                    $form->slug=CommonHelper::slug_fix($form->slug);
+                    if ($form->slug != '') {
+                        if (DistProductCategory::isRepeatedSlug($id, $form->slug)) {
+                            //slug重复
+                            return $form->response()->error(admin_trans_label('url_repeated'));
+                        }
+                    }
+                    //当slug为空时生成slug
+                    if ($form->slug == '') {
+                        $form->slug = DistProductCategory::generateSlug($form->name, $id);
+                    }
+                    //seo_title不能为空
+                    if ($form->seo_title == '') {
+                        $form->seo_title = $form->name;
                     }
-                }
-                //当slug为空时生成slug
-                if ($form->slug == '') {
-                    $form->slug = DistProductCategory::generateSlug($form->name, $id);
-                }
-                //seo_title不能为空
-                if ($form->seo_title == '') {
-                    $form->seo_title = $form->name;
                 }
             });
         });

+ 29 - 27
app/Distributor/Controllers/DistProductController.php

@@ -219,36 +219,38 @@ class DistProductController extends AdminDistController
             //提交前
             // 在保存时进行验证
             $form->saving(function (Form $form) {
-                $form->dist_id =getDistributorId();//保存时直接写死dist_id
-                $id = $form->getKey();
-                //slug配置是否重复
-                $form->slug=CommonHelper::slug_fix($form->slug);
-                if ($form->slug != '') {
+                if ($form->input('title')) {
+                    $form->dist_id =getDistributorId();//保存时直接写死dist_id
+                    $id = $form->getKey();
+                    //slug配置是否重复
+                    $form->slug=CommonHelper::slug_fix($form->slug);
+                    if ($form->slug != '') {
 
-                    if (DistProduct::isRepeatedSlug($id, $form->slug)) {
-                        //slug重复
-                        return $form->response()->error(admin_trans_label('url_repeated'));
+                        if (DistProduct::isRepeatedSlug($id, $form->slug)) {
+                            //slug重复
+                            return $form->response()->error(admin_trans_label('url_repeated'));
+                        }
                     }
-                }
-                //当slug为空时生成slug
-                if ($form->slug == '') {
-                    $form->slug = DistProduct::generateSlug($form->title, $id);
-                }
-                //seo_title不能为空
-                if ($form->seo_title == '') {
-                    $form->seo_title = $form->title;
-                }
-                //增加审核状态
-                $action = isset($_POST['action']) ? $_POST['action'] : '';
-                if ($form->isCreating()) {
-                    if ($action == 'save') {
-                        $form->status = 0;//待审核
-                    } else {
-                        $form->status = 1;//审核中
+                    //当slug为空时生成slug
+                    if ($form->slug == '') {
+                        $form->slug = DistProduct::generateSlug($form->title, $id);
+                    }
+                    //seo_title不能为空
+                    if ($form->seo_title == '') {
+                        $form->seo_title = $form->title;
                     }
-                } else {
-                    if (($form->status == 0 || $form->status == -1) && $action == 'submit') {
-                        $form->status = 1;//审核中
+                    //增加审核状态
+                    $action = isset($_POST['action']) ? $_POST['action'] : '';
+                    if ($form->isCreating()) {
+                        if ($action == 'save') {
+                            $form->status = 0;//待审核
+                        } else {
+                            $form->status = 1;//审核中
+                        }
+                    } else {
+                        if (($form->status == 0 || $form->status == -1) && $action == 'submit') {
+                            $form->status = 1;//审核中
+                        }
                     }
                 }
             });

+ 21 - 20
app/Distributor/Controllers/DistVideoCategoryController.php

@@ -86,29 +86,30 @@ class DistVideoCategoryController extends AdminDistController
             });
             //保存前
             $form->saving(function (Form $form) {
-                $form->dist_id =getDistributorId();//保存时直接写死dist_id
-                $id = $form->getKey();
+                if ($form->input('name')) {
+                    $form->dist_id =getDistributorId();//保存时直接写死dist_id
+                    $id = $form->getKey();
 
+                    //slug配置是否重复
+                    $form->slug=CommonHelper::slug_fix($form->slug);
 
-                //slug配置是否重复
-                $form->slug=CommonHelper::slug_fix($form->slug);
-
-                if ($form->slug != '') {
-                    //把slug中的空格替换成-,多个空格在一起只用一个-,大写字母转换成小写
-                    $form->slug = preg_replace('/\s+/', '-', $form->slug);
-                    $form->slug = strtolower($form->slug);
-                    if (DistVideoCategory::isRepeatedSlug($id, $form->slug)) {
-                        //slug重复
-                        return $form->response()->error(admin_trans_label('url_repeated'));
+                    if ($form->slug != '') {
+                        //把slug中的空格替换成-,多个空格在一起只用一个-,大写字母转换成小写
+                        $form->slug = preg_replace('/\s+/', '-', $form->slug);
+                        $form->slug = strtolower($form->slug);
+                        if (DistVideoCategory::isRepeatedSlug($id, $form->slug)) {
+                            //slug重复
+                            return $form->response()->error(admin_trans_label('url_repeated'));
+                        }
+                    }
+                    //当slug为空时生成slug
+                    if ($form->slug == '') {
+                        $form->slug = DistVideoCategory::generateSlug($form->name, $id);
+                    }
+                    //seo_title不能为空
+                    if ($form->seo_title == '') {
+                        $form->seo_title = $form->name;
                     }
-                }
-                //当slug为空时生成slug
-                if ($form->slug == '') {
-                    $form->slug = DistVideoCategory::generateSlug($form->name, $id);
-                }
-                //seo_title不能为空
-                if ($form->seo_title == '') {
-                    $form->seo_title = $form->name;
                 }
             });
 

+ 24 - 22
app/Distributor/Controllers/DistVideoController.php

@@ -168,30 +168,32 @@ class DistVideoController extends AdminDistController
                 CommonHelper::seoReplace();
             });
             $form->saving(function (Form $form) {
-                $form->dist_id =getDistributorId();//保存时直接写死dist_id
+                if ($form->input('title')) {
+                    $form->dist_id =getDistributorId();//保存时直接写死dist_id
 
-                $id = $form->getKey();
-                $form->slug=CommonHelper::slug_fix($form->slug);
-                if ($form->slug != '') {
-                    if (DistVideo::isRepeatedSlug($id, $form->slug)) {
-                        //slug重复
-                        return $form->response()->error(admin_trans_label('url_repeated'));
+                    $id = $form->getKey();
+                    $form->slug=CommonHelper::slug_fix($form->slug);
+                    if ($form->slug != '') {
+                        if (DistVideo::isRepeatedSlug($id, $form->slug)) {
+                            //slug重复
+                            return $form->response()->error(admin_trans_label('url_repeated'));
+                        }
                     }
-                }
-                //当slug为空时生成slug
-                if ($form->slug == '') {
-                    $form->slug = DistVideo::generateSlug($form->title, $id);
-                }
-                //seo_title不能为空
-                if ($form->seo_title == '') {
-                    $form->seo_title = $form->title;
-                }
-                //替换youtube URL
-                if (strpos($form->video_url, '<iframe') !== false) {
-                    // 使用正则表达式提取 src 属性的值
-                    if (preg_match('/<iframe[^>]+src="([^"]+)"/', $form->video_url, $matches)) {
-                        $src = $matches[1];
-                        $form->video_url = $src;
+                    //当slug为空时生成slug
+                    if ($form->slug == '') {
+                        $form->slug = DistVideo::generateSlug($form->title, $id);
+                    }
+                    //seo_title不能为空
+                    if ($form->seo_title == '') {
+                        $form->seo_title = $form->title;
+                    }
+                    //替换youtube URL
+                    if (strpos($form->video_url, '<iframe') !== false) {
+                        // 使用正则表达式提取 src 属性的值
+                        if (preg_match('/<iframe[^>]+src="([^"]+)"/', $form->video_url, $matches)) {
+                            $src = $matches[1];
+                            $form->video_url = $src;
+                        }
                     }
                 }
             });

+ 21 - 19
app/Distributor/Controllers/SitePagesController.php

@@ -189,27 +189,29 @@ class SitePagesController extends AdminDistController
 
             //保存前
             $form->saving(function (Form $form) use ($location) {
-                //强制写死dist_id
-                $form->dist_id = getDistributorId();
-                //强制写死page_type
-                $form->page_type = $location;
-                $id = $form->getKey();
-                //slug配置是否重复
-                $form->slug=CommonHelper::slug_fix($form->slug);
-                if ($form->slug != '') {
+                if ($form->input('title')) {
+                    //强制写死dist_id
+                    $form->dist_id = getDistributorId();
+                    //强制写死page_type
+                    $form->page_type = $location;
+                    $id = $form->getKey();
+                    //slug配置是否重复
+                    $form->slug=CommonHelper::slug_fix($form->slug);
+                    if ($form->slug != '') {
 
-                    if (SitePages::isRepeatedSlug($id, $form->slug)) {
-                        //slug重复
-                        return $form->response()->error(admin_trans_label('url_repeated'));
+                        if (SitePages::isRepeatedSlug($id, $form->slug)) {
+                            //slug重复
+                            return $form->response()->error(admin_trans_label('url_repeated'));
+                        }
+                    }
+                    //当slug为空时生成slug
+                    if ($form->slug == '') {
+                        $form->slug = SitePages::generateSlug($form->title,$id);
+                    }
+                    //seo_title不能为空
+                    if ($form->seo_title == '') {
+                        $form->seo_title = $form->title;
                     }
-                }
-                //当slug为空时生成slug
-                if ($form->slug == '') {
-                    $form->slug = SitePages::generateSlug($form->title,$id);
-                }
-                //seo_title不能为空
-                if ($form->seo_title == '') {
-                    $form->seo_title = $form->title;
                 }
             });
         });

+ 19 - 17
app/Distributor/Controllers/SitePagesTagController.php

@@ -88,26 +88,28 @@ class SitePagesTagController extends AdminDistController
             });
             //保存前
             $form->saving(function (Form $form) {
-                //强制写死dist_id
-                $form->dist_id = getDistributorId();
-                //slug配置是否重复
-                $id = $form->getKey();
+                if ($form->input('name')) {
+                    //强制写死dist_id
+                    $form->dist_id = getDistributorId();
+                    //slug配置是否重复
+                    $id = $form->getKey();
 
-                $form->slug=CommonHelper::slug_fix($form->slug);
+                    $form->slug=CommonHelper::slug_fix($form->slug);
 
-                if ($form->slug != '') {
-                    if (SitePagesTag::isRepeatedSlug($id, $form->slug)) {
-                        //slug重复
-                        return $form->response()->error(admin_trans_label('url_repeated'));
+                    if ($form->slug != '') {
+                        if (SitePagesTag::isRepeatedSlug($id, $form->slug)) {
+                            //slug重复
+                            return $form->response()->error(admin_trans_label('url_repeated'));
+                        }
+                    }
+                    //当slug为空时生成slug
+                    if ($form->slug == '') {
+                        $form->slug = SitePagesTag::generateSlug($form->name, $id);
+                    }
+                    //seo_title不能为空
+                    if ($form->seo_title == '') {
+                        $form->seo_title = $form->name;
                     }
-                }
-                //当slug为空时生成slug
-                if ($form->slug == '') {
-                    $form->slug = SitePagesTag::generateSlug($form->name, $id);
-                }
-                //seo_title不能为空
-                if ($form->seo_title == '') {
-                    $form->seo_title = $form->name;
                 }
             });
             //删除后