如何用yii2yii框架使用实现多语言

Fecshop 开源电商商城,多语言多货币, BSD 开源协议,基于 Yii2 框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
爱意满满的作品展示区。
Sponsored by
咨询微信:twosecurityrefer
Promoted by
Fecshop 开源电商商城,多语言多货币, BSD 开源协议,基于 Yii2 框架
· 86 天前 · 886 次点击
项目状态:
正式版本已经出来,后台( appadmin )和 pc 端( appfront ),wap 端( apphtml5 )已经完成,完成了一些基本的 api。
1、Fecshop 介绍
全称为 Fancy ECommerce Shop,是基于 php Yii2 框架之上开发的一款优秀的开源电商系统,
Fecshop 支持多语言,多货币,架构上支持 pc,手机 web,手机 app,和 erp 对接等入口,您可以免费快速的定制和部署属于您的电商系统。
详细参看地址:
,您可以在这里提交 bug,问题咨询等等。
PC Web Demo:
Mobile Web Demo ( WAP ):
Mobile VUE Demo(Appserver,前后端彻底分离模式,目前在开发中):
后台演示地址:加 QQ 群,在群公告里面有后台演示地址,账号密码等信息
QQ 群:,入群验证:fecshop
FecShop Email:
Github 地址:
开源协议:
2、Fecshop 文档
二开以及安装文档:
[初版文档撰写完成]
使用帮助说明文档:
[初版文档撰写完成]
3、安装 Fecshop
请务必按照说明安装,自己来配置环境安装吧.
从基础 linux 一步一步的配置的方式,详细参看文档:
4、fecshop 配置:
配置详细参看:
如果您使用 vagrant box 的安装方式,上面的这些步骤,在 box 都配置好了。
5、架构特色
架构特色:参看详细介绍:
下面是简叙:
Fecshop 全称为 Fancy ECommerce Shop,是一款优秀的开源电商系统,遵循 BSD-3-Clause 协议(和 Yii2 框架一样的开源协议),
目的是为了方便 yii2 用户快速的
开发商城,Fecshop 作为一款可以持续性发展的商城系统,
在框架层面有以下特性:
由于商城系统的复杂性,原始的框架 MVC 结构,显的有点力不从心,Fecshop 框架
加入了 Block 层,
Controller 层只负责调度,Model 只负责数据库映射,中间的处理逻辑由 block 来完成,View 层
负责显示,这样各司其职, 以免造成 controller 文件过于庞大。
加入独立功能块,有点类似 Yii2 的 Widget,目的是为了让一些侧栏公用块
可以通过配置的方式
添加,同时,还可以具有设置缓存的功能,譬如侧栏的产品浏览记录,
newsletter 等独立显示块可能在很多
页面用到,通过独立功能块可以配置方便的载入。
在 Model 层的上层加入服务层 Services,这样,Controller,Block,View 层,在原则上
不能直接调用 model,必须通过 Services 层以及子 Services 层,然后 Services 访问各个
model,组织数据,事务处理等操作,
将数据结果返回给上层,这种设计可以方便以后业务
发展后,进而根据业务特点进行重构,或者以后如果出现新技术,新方式,
都重构成自己想要的样子,譬如,
将某个底层由 mysql 换成 mongodb,或者为了应付高并发读写并且多事务性的功能部分,
进行分库分表的设计方式。
多模板系统,设置了多个模板路径,各个模板路径下的文件被加载
的优先级不同,其中,Fecshop 的模板路径下的文件最全面,但是优先级最低,
,第三方模板路径优先级其次,用户本地模板路径优先级最高,
用户可以通过
复制相应路径下的 view 或者 js,css 文件到本地模板路径,存在于高优先级
模板路径的文件会被优先加载,这样用户可以通过多模板系统的原理进行模板的
制作,同时,不影响模板的升级,如果 view 文件升级后被修改,
那么用户可以比对本地模板文件与升级模板文件的代码的不同,
复制更改的代码到本地模板路径
即可。第三方的模板路径的优先级介于本地模板路径和 Fecshop
模板路径之间。
重写机制,的功能基本都可以被用户重写,包括 servies 层,Modules,
Controller,Block,Views,View Layout,
以及 Js Css Img 等,都可以被用户重写,其中 Js,Css,Img,Views,View Layout
是通过多模板
路径优先级来实现的,其他的是通过配置文件的覆盖更改来实现重写,这样,用户
就可以很方便重构或者第三方的功能和模板。
升级最小化干扰,的核心文件是放到 vendor/fancyecommerce/fecshop
路径下面,和第三方扩展,用户二次开发路径完全隔离开,
Fecshop 可以通过 composer 进行核心功能的升级,用户只需要通过 composer 升级
快速高效,Fecshop Servises 遵循 Yii2 的懒加载方式,只初始化使用到的组件服务,
缓存方面有整页缓存,block 部分缓存,动态数据 ajax 加载等方式,让您的网站快速响应。
多入口模式,分为 appadmin (后台),appfront ( PC 前端),apphtml5 (手机 web ),
appserver (手机 app 服务),appapi ( erp,或者其他接口对接),
不同的业务,不同的设备,进入不同的入口,各个入口共用服务层 services,
但是 modules 部分独立,这样相互干扰最小,可以相互独立开发。
后台封装化,fec_admin 扩展可以快速的实现增删改查类型的表单列表,
方便用户快速的做增删改查。
鉴于以上特点,您可以下载安装,然后更改的模板和功能,扩展自己想要
的功能,或者安装第三方开发好了的扩展或者模板,来快速的组建起来您的网站。
如果您认为这是一个不错的项目,对您有帮助,你可以通过下面的方式进行捐赠,
这里感谢您对开源项目的支持。
6 回复 &| &直到
16:23:57 +08:00
& &86 天前
& &86 天前
& &83 天前 via Android
pc 和 mobile 是两套? 这样的垃圾还是不要了
pc mobile 应该是一套!
& &52 天前
大蠢,不懂电商请闭嘴。
& &52 天前 via Android
你懂电商 你说出个一二三来
怕是 pi 也当不出一个
& &52 天前
傻狗真尼玛多,精神病
& · & 607 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 61ms · UTC 22:53 · PVG 06:53 · LAX 14:53 · JFK 17:53? Do have faith in what you're doing.Yii2配置多语言_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Yii2配置多语言
来源:Linux社区&
作者:derrck
我的YII2版本是2.0.7, 设置多语言时和其他教程有不同的地方, 所以整理如下
1. 在一个controller里面写一个调用i18n的语句, 比如actionIndex
echo \Yii::t('app', 'whatisthis');
现在进入这个页面, 页面输出whatisthis
2. 手动创建一个文件夹messages来存放多语言相关文件, 如果是advanced版本则在frontend下面创建这个文件夹
3. 创建i18n配置文件
yii message/config frontend/messages/config.php
会自动生成一个config.php文件
然后打开frontend/messages/config.php, language行设置为
'languages' =& ['en', 'zh-CN'],
4. 创建message文件, 执行
yii message frontend/messages/config.php
这样在frontend/messages里面会生成en和zh-CN文件夹
5. 打开frontend/messages/zh-CH/yii.php
'whatisthis' =& '这是啥玩意',
6. 在/yii2/frontend/config/main.php里设置
components中加入
'i18n' =& [
'translations' =& [
'app*' =& [
'class' =& 'yii\i18n\PhpMessageSource',
//'basePath' =& '@app/messages',
//'sourceLanguage' =& 'en-US',
'fileMap' =& [
'app' =& 'yii.php',
'app/error' =& 'error.php',
],注意, 如果想要更改validate等yii本身的翻译需增加下面设置到'translations' =& []中:
'yii' =& [ 'class' =& 'yii\i18n\PhpMessageSource', 'sourceLanguage' =& 'en-US', 'basePath' =& '@app/messages' ],
components同等级后加入
'language' =& 'zh-CN',
7. 再刷新页面, 应该会显示"这是啥玩意"了.
8. 当你需要新增其他语言时候, 执行第3,4步会重新生成文件, 之前的翻译(whatisthis)会保留, 但我试了之后发现变成了
'whatisthis' =& '@@这是啥玩意@@',
很奇怪的两边多出@@.
在Yii2中使用Pjax导致Yii2内联脚本载入失败的问题
Yii2 实现修改密码功能
Yii 用户登陆机制&
Yii中引入js和css文件&
Yii 不完全解决方案&
Yii CGridView 基本使用
Yii框架分布式缓存的实现方案
Yii 的详细介绍:Yii 的下载地址:
本文永久更新链接地址:
相关资讯 & & &
& (11/17/:06)
& (06/15/:45)
& (01月07日)
& (06/15/:02)
& (06/15/:01)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款标签:至少1个,最多5个
Yii2的多模型与事务平时用的也挺多的,但是网上现有的资源不多,为此我觉得有必要做个总结与分享,雷锋同志的一贯作风,不做解释。在利用大伙喝咖啡的时间我亲自下海实战了,实践出真知,不耍嘴皮子,拿经验说事。OK,Stop,要是不感兴趣的呢可以不看了,要是感兴趣的呢可以继续往下看,绝对让你收获颇丰哈哈。
通过实战,分享Yii2多模型与事务的简单用法。
1、controller部分
public function actionCreate()
$model = new OpportunityType();
$_model=new User();
$post=Yii::$app-&request-&post();
if(isset($post['User']) && isset($post['OpportunityType']))
$model-&attributes=$post['OpportunityType'];
$_model-&attributes=$post['User'];
if($model-&validate() && $_model-&validate())//这里是先验证数据,如果通过再save()。
$model-&save(false); //保存不验证(前面已经验证了,所以此处可以设为false)
$_model-&save(false);
return $this-&redirect(['view', 'id' =& $model-&id]);
return $this-&render('create', [
'model' =& $model,
'_model'=&$_model,
return $this-&render('create', [
'model' =& $model,
'_model'=&$_model,
2、view部分
$form = ActiveForm::begin([
'id'=&'sales-form',
'enableAjaxValidation' =& true,
'enableClientValidation' =& true,
&?= $form-&field($model, 'jhlx')-&textInput(['maxlength' =& true]) ?&
&?= $form-&field($model, 'company_id')-&textInput(['maxlength' =& true]) ?&
&?= $form-&field($model, 'sort')-&textInput() ?&
&?= $form-&field($_model, 'username')-&textInput(['maxlength' =& true]) ?&
&div class="form-group"&
&?= Html::submitButton($model-&isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' =& $model-&isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?&
&?php ActiveForm::end(); ?&
注:此部分是多模型的使用,当OpportunityType和User两个验证通过之后才能保存数据。
1、controller部分
public function actionCreate()
$model = new OpportunityType();
$_model=new User();
$post=Yii::$app-&request-&post();
if(isset($post['User']) && isset($post['OpportunityType']))
$db = Yii::$app-&
$transaction = $db-&beginTransaction();
//开启事务
$model-&attributes=$post['OpportunityType'];
$_model-&attributes=$post['User'];
if($_model-&save())//这里是先验证数据,如果通过再save()。
$model-&user_id=$_model-&
if(!$model-&save()){
$error=array_values($model-&getFirstErrors())[0];
throw new Exception($error);//抛出异常
$error=array_values($_model-&getFirstErrors())[0];
throw new Exception($error);//抛出异常
// 提交记录(执行事务)
$transaction-&commit();
return $this-&redirect(['view', 'id' =& $model-&id]);
} catch (Exception $e) {
// 记录回滚(事务回滚)
$transaction-&rollBack();
Yii::$app-&session-&setFlash('error',$e-&getMessage());
return $this-&render('create', [
'model' =& $model,
'_model'=&$_model,
return $this-&render('create', [
'model' =& $model,
'_model'=&$_model,
注:要想事务回滚,必须抛出异常。2、view部分还是和多模型的一样,此处省略。
1、多模型与model有联系,事务与数据库有联系。2、多模型model验证数据全部通过后才能保存数据,否则保存失败;事务保存数据遇到异常会把原来已保存的数据撤销。3、多模型表与表之间无联系,事务表与表之间要有联系。
isset与empty的区别1、isset($var)判断变量是否设置,empty($var)判断变量是否为空!如$one已经定义没有值,isset($one)返回true,判断存在;empty($one)判断为空,判断存在,同样返回true。如$one定义为null,isset($one)返回false;empty($one)返回true(重要区别)。2、empty比isset范围更广,进一步说isset更为精确。
0 收藏&&|&&7
你可能感兴趣的文章
5 收藏,745
2 收藏,828
16 收藏,782
本作品 保留所有权利 。未获得许可人许可前,不允许他人复制、发行、展览和表演作品。不允许他人基于该作品创作演绎作品
分享到微博?
我要该,理由是:
在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?Yii2框架配置语言包 - 简书
Yii2框架配置语言包
Yii2框架配置中文语言
Paste_Image.png
刷新About,会看到home变成了“首页”
Paste_Image.png
Yii2的中文语言包配置,在config文件夹mian.php中新建下面所示的配置项数组‘i18n’
语言包配置
然后在frontend的根目录下新建messages文件夹,在messages文件夹下新建zh-CN文件夹,文件夹下建立common.php的文件。
Paste_Image.png
修改frontend--&views--&layouts--&main.php中默认的导航栏上的英文的路径。片段代码如下
NavBar::begin([
'brandLabel' =& Yii::t('common','Blog'),//修改
'brandUrl' =& Yii::$app-&homeUrl,
'options' =& [
'class' =& 'navbar-inverse navbar-fixed-top',
$menuItems = [
['label' =& Yii::t('yii','Home'), 'url' =& ['/site/index']],//修改
['label' =& Yii::t('common','About'), 'url' =& ['/site/about']],//修改
['label' =& Yii::t('common','Contact'), 'url' =& ['/site/contact']],//修改
if (Yii::$app-&user-&isGuest) {
$menuItems[] = ['label' =& Yii::t('common','Signup'), 'url' =& ['/site/signup']];//修改
$menuItems[] = ['label' =& Yii::t('common','Login'), 'url' =& ['/site/login']];//修改
$menuItems[] = '&li&'
. Html::beginForm(['/site/logout'], 'post')
. Html::submitButton(
'Logout (' . Yii::$app-&user-&identity-&username . ')',
['class' =& 'btn btn-link logout']
. Html::endForm()
. '&/li&';
echo Nav::widget([
'options' =& ['class' =& 'navbar-nav navbar-right'],
'items' =& $menuItems,
NavBar::end();
路径修改后刷新域名,可以看到网页的导航栏都变成了中文。
中文导航栏
如果想要切换语言成为默认语言,只需要注释掉config下面的main.php的中文配置代码即可
//'language'=&'zh-CN'
导航栏又恢复了默认语言
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
如何优雅的使用 phpStorm - 后端 - 掘金按照惯例依然是从百科上复制一条简介: PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具。PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能和智能HT...
写文初衷 i18n组件的主要作用就是用来转化网站的展示语言的,即网站国际化。鉴于yii2关于i18n组件的配置使用文档讲解不够细致,故整理官方文档和一些博客之后,写此博文。如有不妥,望多多指教。ps:我的yii版本是2.0.8。 传送门(该链接为我借鉴的主要部分,但事实上写...
这两天把项目部署到线上,还不太懂Linux的操作,所以在Windows下折腾了一番环境。琐碎的配置太多,在这里记录下防止忘记,文笔不好,请见谅。文章主要讲下部署的整体过程以及一些个人遇到的坑:1)windows版本选择2)安装Nginx及配置;3)安装mysql5.7;4)...
无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到这篇好的文章:/p/42e11515c10f 写在前面的话阅读本文之前,先看下面这个webpack的配置文件,如果每...
喜欢在夜晚坐在书桌前,望着窗外漆黑诡异的夜色,静,静听,听不到任何声音,偶尔抬头,幽暗的夜空泛着银光,一颗颗绿色的星星,像夏夜那般温柔。从深奥莫测的苍穹,从遥远的银河深处,若隐若现,友爱地向我眨着眼睛。最好在来点风,任那阴暗的风温柔的拂过我的脸庞,吹过我的发梢,听那时间撕...
特种兵训练!已经是培训的第9天,大家都是在不断突破不断成长,自古以来一直都是这么说的,活到老学到老。今天上午签到大家确实不满意,就是因为插曲让团队越挫越勇,越磨合越默契。晚上大家都进步了,加油! 每天的签到开课前我们班级所有成员都会主动集合演练,班委们都在第一时间引导大家遇...
人这一生, 赤条条来, 赤条条去, 若觉得乏累辛苦, 都是自寻的, 从来, 只有作茧自缚的苦, 没有化茧成蝶的悔, 不被口腹之欲和攀比之心所挟持, 便是自在的, 想要活得洒脱便保留一份童真, 清心寡欲、恬淡自然便可滋养你的童真, 因为日子是过给自己的, 得疼自己。 漫画:八...
有人告诉你,未来每个人都会在网上卖东西!你会怎么看?兴奋?抑或质疑?我的反应是蛮认同,最近和微商平台,电商团队接触的比较多,也看了一些商业模式的书籍,我就会感觉未来的商业是一个开放式、网络化的状态,而所有的人都将被网罗其中!
其实,这句话,是今天《疯传》在读...
亲子日记第二十九天,打开简书准备写日记发现因为自己的粗心把昨天的日期8日写成了28日,哎!真是不可原谅!
今天是周五,转眼间又到了周末,所以接回儿子就回家做饭,让蕙钰在托付班多写会儿作业。做了孩子最爱吃的土豆饼和炒蛤蜊,做完饭一看才六点半,就去...yii2 多语言中有变量怎么处理_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
yii2 多语言中有变量怎么处理
我有更好的答案
直接在Controller里面getModel(Model.class).save();即可 约定是表单提交的name为Model的className首字母小写.数据库属性名
采纳率:97%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包}

我要回帖

更多关于 yii框架实现用户登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信