查看fecshop\app\appadmin\modules\AppadminbaseBlock等后台很多的块,发现后台好像不支持多语言,应该怎么处理或者扩展? 请知道的仁兄,指点一二。 官方不建议修改vender中的内容。 如果是用重写,工作量是不是有点大了。
后台目前不支持多语言,后台是给自己人用的,暂时没有做多语言
后面有时间在扩展这个吧。
如果要自己做,可以用Yii2的多语言机制做:http://www.yiichina.com/doc/guide/2.0/tutorial-i18n
后面有时间,可能会用vue重构后台,不过不一定,看时间。
我的意思是,怎么修改方法。 用类重写?还是直接修改vender里面的文件?还是由其他方法?
@dosenje #3楼 http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-rewrite-func.html
@dosenje [#3楼](#comment3) 扩展分2种,一种是重构已有功能,可以参看上面的链接 另外一种是扩展新功能。
您可以在 @appadmin/local 下面写您的本地代码
后面,我已经做几个例子。让大家轻松上手。
fecshop在设计上面想尽量的简单化,但是功能的繁杂,又不得不过多的设计。
@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目录,你的更新也无法生效的。
@dosenje #6楼 你重写的,是一个方法,如果fecshop升级了这个方法,你也想同步,那没办法,只能手动处理了。
@dosenje #6楼 这个是无法解决的啊,升级带来的无法调和的冲突。