hello,word

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'];

 

posted @   tying  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示