EDUSOHO踩坑笔记之五十:EduSoho 8.0 升级指南

69 篇文章 0 订阅
59 篇文章 6 订阅

EDUSOHO踩坑笔记之五十:EduSoho 8.0 升级指南

系统初始化命令改动

 
  1. app/console topxia:init # 7.0 系列
  2. app/console system:init # 8.0 系列

Migration

在7.0版本包括之前的版本中,数据库migration脚本文件的创建和执行是用doctrine generatedoctrine migrate 这两个命令。在8.0中数据库脚本文件创建和执行命令是使用bin/phpmig目录下的去执行。

Example

 
  1. bin/phpmig generate [name] # name可更改, 命名规范,name需要表明意图 如:`create_course` 表明要创建course表等
  2. bin/phpmig migrate # 同 app/console doctrine:migrations:migrate
  3. bin/phpmig # 可查看所有支持的命令

新写的数据库脚本要支持执行和回滚,这意味着数据库脚本不能像7.0之前一样只用写 up 方法,也要写 down 方法。这样就可以使用 bin/phpmig redo [version] 通过版本号去回滚执行。

具体例子如下

 
  1. bin/phpmig generate test #新建创建test表的migration脚本

test migration 脚本的具体实现

 
  1. <?php
  2.  
  3. use Phpmig\Migration\Migration;
  4.  
  5. class Test extends Migration
  6. {
  7. /**
  8. * Do the migration
  9. */
  10. public function up() # 新建test表
  11. {
  12. $biz = $this->getContainer();
  13. $connection = $biz['db']; # 数据库连接在biz容器的['db']里
  14. $connection->exec("
  15. CREATE TABLE `test` (
  16. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  17. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='test';
  18. ");
  19.  
  20. }
  21.  
  22. /**
  23. * Undo the migration # 脚本回滚
  24. */
  25. public function down()
  26. {
  27. $biz = $this->getContainer();
  28. $connection = $biz['db'];
  29. $connection->exec("DROP TABLE IF EXISTS `test`;");
  30. }
  31. }

这样当数据库已经有test表的时候,Migrate 命令执行会报错可以通过手动执行 down 方法里的 SQL 脚本来消除错误。

注意事项

  • 当执行bin/phpmig migrate 命令时出现 "[Doctrine\DBAL\DBALException] Unknow column type "enum" requested. " 时, 需要手动进入edusoho数据库执行以下命令:
 
  1. ALTER TABLE `ip_blacklist` MODIFY `type` enum('failed','banned') NOT NULL DEFAULT 'failed' COMMENT '禁用类型'

由于之前该字段的注释 加了 DC2TYPE 导致 string 被改成 enum,所以去掉该注释即可。

  • 新部署的开发环境直接在 develop 执行 bin/phpmig migrate 可跳过该注意事项。由于新的 migration 是在7.2.5版本上支持的,所以在7.2.5之前的开发环境需要将分支切换到v7.2.5这个tag上 然后执行老版本到7.2.5版本之间的migration,然后再切换到新分支执行 bin/phpmig migrate命令去执行从7.2.5到develop之间的migration。

  • 当前开发环境在7.2.5之前才执行以下命令, 7.2.5以上就跳过。

 
  1. cd <edusoho-dir>
  2. git checkout v7.2.5
  3. app/console doctrine:migrations:migrate # 执行老版本到7.2.5之间的migration
  4. git checkout develop
  5. # 执行migrate可能会报enum type的错误, 请先手动去掉ip_blacklist表里type字段的注释然后再执行此命令
  6. bin/phpmig migrate #执行7.2.5到develop之间的migration;

如果当前在7.2.5之后,直接切换到develop,执行bin/phpmig migrate命令,如果命令执行途中某个version有报错信息,暂时先把该version的up方法注释掉然后重新执行migrate命令,以确保migration能正确执行。

Vendor

EduSoho 8.0 版本更新了 Symfony 的版本到 2.8 去掉了一些无用的包如 ORM 等。7.0 的 vendor 目录是在 vendor2 目录下,由于 php composer 默认使用 vendor 目录,这导致我们增加新的依赖包十分的不方便,所以8.0中将原先的 vendor2 目录清除了,改为了 vendor

插件

目录结构变化

原目录结构:

 
  1. plugins/
  2. Helloworld
  3. HelloworldBundle
  4. Controller
  5. DependencyInjection
  6. Configuration.php
  7. HelloworldExtension.php
  8. Resources
  9. config
  10. public
  11. views
  12. HelloworldBundle.php
  13. Scripts
  14. BaseInstallScript.php
  15. InstallScript.php
  16. Service
  17. helloworld
  18. Dao
  19. Impl
  20. HelloworldDaoImpl.php
  21. HelloworldDao.php
  22. Impl
  23. HelloworldServiceImpl.php
  24. HelloworldService.php
  25. plugin.json

现目录结构:

 
  1. plugins/
  2. HelloworldPlugin/
  3. Biz/
  4. Dao/
  5. Service/
  6. Controller/
  7. Migrations/
  8. Resources/
  9. config
  10. static-dist
  11. static-src
  12. views
  13. Scripts/
  14. BaseInstallScript.php
  15. InstallScript.php
  16. HelloworldPlugin.php
  17. plugin.json
  • 修改插件名,须带后缀Plugin;
  • 把 HelloworldBundle下 的目录和文件移到与 HelloworldBundle 的平级目录,删除 HelloworldBundle 目录;
  • 修改 HelloworldBundle.php 名字为 HelloworldPlugin.php,需要继承 Codeages\PluginBundle\System\PluginBase
  • 新建 Biz 目录及其相应子目录,把 service 下的文件移到 Biz 相应目录下;
  • 把 public 的目录移到 static-src 目录下,删除 public 目录,且把 js 目录下的 controller 下的目录文件移到 js 目录下,删除 controller 目录;
  • 修改所有PHP文件的 namespace。

插件相关命令

在一段时期内,还是会兼容老的插件机制。老的插件机制命令已经更名成:

 
  1. old-plugin:create
  2. old-plugin:refresh
  3. old-plugin:register
  4. old-plugin:remove

新的插件命令,请参考新插件的使用文档:插件的命令行工具

EDUSOHO踩坑笔记之五十一:配置文件的变更

已安装的插件,原会写入 app/data/plugin_installed.php 文件,新插件会写入到 app/config/plugin.php

定制开发 Custom 目录下 twig/controller/routing.yml 等覆盖

原来的配置项 template_overwrite_map 已经失效。需要修改 CustomWebBundle.php 如下:

 
  1. <?php
  2. namespace Custom\WebBundle;
  3. use Symfony\Component\HttpKernel\Bundle\Bundle;
  4. class CustomWebBundle extends Bundle
  5. {
  6. public function getParent()
  7. {
  8. return 'TopxiaWebBundle';
  9. }
  10. }

Symfony 框架会按上面指定的 bundle 覆盖 Resources/ 目录下的相同文件,功能和之前的 template_overwrite_map 一样。 注意 Resources/目录下所有的重名文件都会覆盖。此外,相同名字controller,也会直接覆盖。所以:

  • Custom 下所有的与 Topxia 同名 Controller,必须继承 Topxia 的 Controller。
  • 目前Custom下的路由配置文件,已经改成 custom_routing.ymlcustom_admin_routing.yml
    详见 Symfony 官方文档:http://symfony.com/doc/2.8/bundles/inheritance.html。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1.课程发布系统  支持三种课时类型:视频、图文、音频  除自主发布视频,也可以引用站外视频  课程目标和适合人群,协助学员定位  资料上传、测验题库维护,增强教学效果  可视化课时管理,可以对逐个课时进行发布,支持连载课程 2.在线学习系统  课程展示页面和学习页面分离,让处于不同体验时期的学员获得该时期的必要信息  支持支付宝购买课程  笔记、资料,学员可随时记录知识要点,查看、下载课时资料  问答、讨论区,师生之间、学员之间可有效沟通  在线测验,学生学习后可进行测验了解掌握状况  支持大部分移动客户端 3.题库试卷系统  可添加各种题型的试题,支持单选题、多选题、填空题、判断题、问答题、材料题,后续还会增加更多  试卷与课程、课时相对应,逻辑清晰,应用灵活  根据题库,可按照难易程度、课时范围快速智能组卷  学生做题时,有计时提醒、单题状态、题目定位、题目标记、题目收藏等各种强大的辅助功能可用  试卷提交后,客观题自动算分,主观题可由课程老师来进行批阅打分  试卷批阅完成,可查看试卷解析和评语,也可再次重做试卷 4.系统功能  支持三种管理权限:教师、管理员、超级管理员。用于三种不同分工  后台首页仪表盘,全面快速了解网校的运营、收入情况  简洁的内容管理,通过页面、导航、编辑区有效的组织网站  各种模版选择和定制,让网站独具特色!  云服务支持,通过简单设置实现云服务升级

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jyl_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值