后台如果需要多语言应该怎么处理?

bug问题 · dosenje · 于 6年前 发布 · 2919 次阅读

查看fecshop\app\appadmin\modules\AppadminbaseBlock等后台很多的块,发现后台好像不支持多语言,应该怎么处理或者扩展? 请知道的仁兄,指点一二。 官方不建议修改vender中的内容。 如果是用重写,工作量是不是有点大了。

共收到 8 条回复 问题提问
Fecmall#16年前 0 个赞

后台目前不支持多语言,后台是给自己人用的,暂时没有做多语言

后面有时间在扩展这个吧。

如果要自己做,可以用Yii2的多语言机制做:http://www.yiichina.com/doc/guide/2.0/tutorial-i18n

Fecmall#26年前 0 个赞

后面有时间,可能会用vue重构后台,不过不一定,看时间。

dosenje#36年前 0 个赞

我的意思是,怎么修改方法。 用类重写?还是直接修改vender里面的文件?还是由其他方法?

Fecmall#56年前 0 个赞

@dosenje [#3楼](#comment3) 扩展分2种,一种是重构已有功能,可以参看上面的链接 另外一种是扩展新功能。

您可以在 @appadmin/local 下面写您的本地代码

后面,我已经做几个例子。让大家轻松上手。

fecshop在设计上面想尽量的简单化,但是功能的繁杂,又不得不过多的设计。

dosenje#66年前 0 个赞

@Terry #4楼 这样的话,每一个都重写一次,而且重写过的方法,vender后期升级也一样是被重写过了的。 比如我因为引入多语言需要重写了一个方法

public function saveCategory()
    {
        $cate_id = Yii::$service->category->GetPrimaryKey();
        $editFormData = Yii::$app->request->post('editFormData');
        if (isset($editFormData)) {
            $defaultLangName = Yii::$service->fecshoplang->GetDefaultLangAttrName('name');
            if (!isset($editFormData['name'][$defaultLangName])
                || !($editFormData['name'][$defaultLangName])
            ) {
                echo  json_encode([
                    'statusCode'=>'300',
                    'message'=>'分类的默认语言name不能为空',
                ]);
                exit;
            }
            $thumbnail_image = CRequest::param('thumbnail_image');
            $image = CRequest::param('image');
            if ($thumbnail_image) {
                $editFormData['thumbnail_image'] = $thumbnail_image;
            }
            if ($image) {
                $editFormData['image'] = $image;
            }

            $product_select_info = CRequest::param('product_select_info');
            $product_unselect_info = CRequest::param('product_unselect_info');
            $category_id = $editFormData[$cate_id];
            //var_dump($editFormData);
            //echo $category_id;exit;
            $addCateProductIdArr = explode(',', $product_select_info);
            $deleteCateProductIdArr = explode(',', $product_unselect_info);
            Yii::$service->product->addAndDeleteProductCategory($category_id, $addCateProductIdArr, $deleteCateProductIdArr);

            $parent_id = (Yii::$app->request->post('parent_id'));
            if (!isset($editFormData[$cate_id]) || !$editFormData[$cate_id]) {
                $editFormData['parent_id'] = $parent_id;
            }
            $originUrlKey = 'catalog/category/index';
            Yii::$service->category->save($editFormData, $originUrlKey);
            $errors = Yii::$service->helper->errors->get();
            if (!$errors) {
                echo  json_encode([
                    'statusCode'=>'200',
                    'message'=>'save success',
                ]);
                exit;
            } else {
                echo  json_encode([
                    'statusCode'=>'300',
                    'message'=>$errors,
                ]);
                exit;
            }
        }
    }

那么后期即使你更新文件到vender目录,你的更新也无法生效的。

Fecmall#76年前 0 个赞

@dosenje #6楼 你重写的,是一个方法,如果fecshop升级了这个方法,你也想同步,那没办法,只能手动处理了。

Fecmall#86年前 0 个赞

@dosenje #6楼 这个是无法解决的啊,升级带来的无法调和的冲突。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics