shopxo学习过程
1.概述:
shopxo是基于tp6开发的,截至至2025年1月9日,该时间节点的环境需要php8.0.2,在新安装shopxo时会进行环境监测。基本安装按官网说明即可。
2.学习进程
1.2025-01-09,安装php环境,及开发使用ide。
2.了解shopxo基础,大体上点击了软件的各个功能点
1)路由使用了伪静态,结尾以.html结束。因此在开发找网络请求时需要注意不要使用fetch/XHR过滤,应该使用Doc过滤。如果是ajax请求,则又需要使用fetch/XHR。
2)路由原则基本遵循大部分框架的写法。
如下 前台:http://shopxo.com/?s=customview/index/id/2.html 后台 http://shopxo.com/adminm3yete.php?s=index/index.html
3)文件目录参考官网(虽然也有一些错误,但是不影响),即便不看也没关系,做过类似国内框架的应该都可以猜明白。
太长了,而且有错误,自己看官网吧
https://doc.shopxo.net/article/4/265292898306621440.html
4)该框架的controller层几乎没有做什么事情,仅仅起到了赋值给view层和映射views关系作用。具体逻辑都在server层。
5)数据库操作方式未tp常用方式
1 | //CustomView无前缀表名Db::name('CustomView')->where(['id'=>$data_id])->update($data) |
3.2025-01-10今日的主要任务是打通shopxo的整体流程
6)打开debug模式,官网说法
系统根目录与 app 目录同级的 example.env 文件重命名为 .env ,其中的 APP_DEBUG 等于 true 即可
如果 example.env 文件不存在,则可以自行创建 .env 文件,里面的内容写 APP_DEBUG=true 保存即可
我不确信env文件的内容,因此下了个历史版本的,发现仅有一行代码,如图
7)views 是比较麻烦的一点,因为使用了tp的视图继承,views的继承可以理解为模板的复写。
如下图 admin controller对应index action,index 默认会使用views中同名html文件
index.html
①.文件复写了几个block,这里引用了区块的概念,可以理解为ui设计中的布局位置。
②.文件继承了module/view/form_table/form.html,这里的block不是最终的html,而是父级复写同名block的html代码片段
③ form.html页面同名block 会被from 里面的block form_operate_top替换,同时注意上图4的位置{{__block__}} 文件会将原父级的代码替换到这里。】
④ 在shopxo中默认的页面一种层层递进的关系,以后台?s=admin/index.html为例。action.html(个性化定制内容,主要用于复写页面的个性化区块内容)>module/view/form_table/form.html(页面整体布局文件)>module/view/form_table/form_table.html(列表搜索【主要html】和数据布局)>module/view/form_table/form_table_content(字段内容)
8)在form_table_content.html文件中,有两个关键变量,是存放和展示数据用的,$form_table_data_list是数据库读取的数据,$form_table['form']是页面要展示的字段内容。
而这两个变量的赋值在controller/admin的构造函数中,FormTableInit在其父类。
在其父类中进行了数据库的查找操作。下图中$module 的值为 array(2) { ["module"]=> string(21) "\app\admin\form\Admin" ["action"]=> string(5) "index" }
这个函数的里面会根据form返回的数据库字段进行数据的读取和处理。
form表单不在单独列出和说明,详细参考和查找官方文档
https://doc.shopxo.net/article/4/262830136821284864.html
9)这里找到了一个bug,后台管理员页面的搜索状态会报错,明显是个sql错误,如图
看下代码,字段名不对,这在数据库是status字段,而这里用status_name是为了让其显示数据库中值代表的含义,而不是显示数据库中的值。
如果我们改成status,搜索成功不报错了,但是字段显示的就回事0、1、2等数字了。因此修复改bug可以参考gender(性别字段)
将status_name改为status后会变成如下图的样子
正确的修改方法
10)提出了一个新的概念--钩子hook,还在研究当中
3.总结
此框架并不是一个很好的框架。他可能有一些优点,但是架不住自身的不友好。不是很推荐使用框架
1)官方文档很抽象,不像是给新手玩家看的。没有一定的开发水准是看不透彻的。而有一定研发能力的人,看不看他的官方文档都一样。
2)外部(百度、google等搜索引擎)资料也不多,而且非常简单,看不看都一样。
3)我们来欣赏一段简单的代码
// 单独处理条件
$detail_dkey = empty($this->out_params['detail_dkey']) ? (empty($form_data['detail_dkey']) ? 'id' : $form_data['detail_dkey']) : $this->out_params['detail_dkey'];
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战