联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
如何创建不同状态的模块内容列表
类型:迅睿CMS 更新时间:2023-11-17 10:31:51 数据控制器 用户中心 自动生成
插件 建站系统 V3.16
应用作者 迅睿官方团队
发布时间 2022-03-01 15:30:06
更新时间 2024-11-11 14:53:11

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

捕获



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

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

捕获1



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

插件教程:https://www.xunruicms.com/doc/app-928.html

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