如何创建不同状态的模块内容列表

迅睿框架 更新 2023-11-17 10:31:51 业余选手

如图,“全部项目”列表是创建项目模块后用户中心自动生成的列表,蓝色划圈的三个列表是准备新创建的。

捕获



预想的效果是:
——竞标中:竞标中的项目,发布人仍然可以修改项目字段,接受竞标,并且同意接受某个竞标;
——进行中:接受某个竞标并付款给平台后,项目状态自动或管理员手动更改为“进行中”,同时将中标人和中标金额传递到项目字段中。进行中的项目发布人和中标人双方均可以看到,项目字段发布人不得再编辑项目字段(或者仅可以更新项目状态字段),进行中的项目双方可以在项目编辑页面进行对话沟通;
——已完成:管理员或项目发布人将项目状态更改为“已完成”后,该条项目就转变为“已完成”项目,之后双方均不得再对项目进行任何编辑。

目前已经实现的:
我是通过在用户中心创建了三个数据控制器,分别对应“竞标中”“进行中”和“已完成”,然后在where_list处用项目状态字段对项目列表进行了限定,这样三个列表就能分别展现不同进度的项目列表(如下图)。同时,对生成的post页面进行了修改,基本实现了对三个状态项目的编辑或查看详情功能。

捕获1



我的疑问:
——我的上述方法是否符合系统逻辑,能否基于模块自动生成的Home控制器进行加工,以达到上述效果?
——项目状态如果自动变更的话,是通过钩子还是控制器完成?在控制器里是不是也能用钩子?

方案

  • 外聘专员-GOLANG工作室 #1 · 2023-11-17 10:14:48
    满意答案
    没有问题,where_list就是用于组合条件的写法还可以参考支付插件的控制器文件写法:app/Pay/Controllers/Member/Paylog.php
    // index
    public function index() {
    
        $tid = (int)\Phpcmf\Service::L('input')->get('tid');
        $where = ['`uid`='.$this->uid];
        switch ($tid) {
            case 1: // 收入
                $where[] = '`value` > 0';
                break;
            case -1: // 消费
                $where[] = '`value` < 0';
                break;
            default : // 全部
                break;
        }
    
        \Phpcmf\Service::M()->set_where_list(implode(' AND ', $where));
        list($tpl, $data) = $this->_List(['tid' => $tid]);
    
        // 初始化
        $data['param']['tid'] = $data['param']['total'] = 0;
    
        // 列出类别
        $my = [];
        $type = ['0' => '全部', '1' => '收入', '-1' => '消费'];
        foreach ($type as $i => $t) {
            $data['param']['tid'] = $i;
            $my[$i] = [
                'name' => dr_lang($t),
                'url' => dr_member_url('pay/paylog/index', $data['param'])
            ];
        }
    
        \Phpcmf\Service::V()->assign([
            'tid' => $tid,
            'type' => $my,
        ]);
    
        \Phpcmf\Service::V()->display('paylog_index.html');
    }

  • 芝麻通 #2 · 2023-11-17 10:21:58
    第二个问题,控制器或者钩子都可以来操作的,都是判断权限,变更相关参数。控制器可以执行钩子,根据模块内容相关的那几个钩子来
  • 业余选手 #3 · 2023-11-17 10:22:08
    外聘专员-GOLANG工作室 好的,感谢解答。项目状态如果自动变更的话,是通过钩子还是控制器完成呢?
  • 业余选手 #4 · 2023-11-17 10:30:48
    芝麻通 好的,学习了,谢谢
  • 业余选手 #5 · 2023-11-17 10:31:51
    @外聘专员-GOLANG工作室:感谢解答。结帖。

迅睿系统漏洞

GeoSeo收录宝
GeoSeo收录宝(2026-09-01)
升级 ai智能发布功能 升级 支持8国语言后端设置和前端输出功能 ...
Word发布批量上传
Word发布批量上传(2026-08-31)
版本覆盖问题重发
多语言翻译Seolang
多语言翻译Seolang(2026-08-31)
新增 LLM 大模型对话翻译模块 配置层强类型化重构 URL 模...
自定义存储
自定义存储(2026-08-30)
同步服务器端通用版实现,统一管理端、CMS 端和浏览器直传的提示与错...
GeoSeo工具箱
GeoSeo工具箱(2026-08-29)
新增 bing推送 新增 IndexNow推送 新增 baidu...
外贸多语言建站
外贸多语言建站(2026-08-27)
新增阿里云专业版入口 新增阿里云自动识别字符格式
Querylist渐进式采集
Querylist渐进式采集(2026-08-26)
增加范围截取规则
实时任务
实时任务(2026-08-26)
补充并整理完整使用说明、历史版本更新日志,统一帮助页样式。