应用插件 版主:官方插件技术组
表单限制报名量和表单对应的id只能提交一次
类型:迅睿CMS 更新时间:2022-08-30 00:45:34
插件 模块内容表单 V1.25
应用作者 迅睿官方团队
发布时间 2021-03-24 10:40:39
更新时间 2024-01-10 10:32:53


官方表单辣手的问题,比如我要做一个报名系统,主题ID1的 quota 是设定的最大报名量,roster_total 是系统记录报名数量(自动统计的)

image

如果我设置id1的报名是50人,然后系统报名到50人了。怎么让人家不能再从前台报名了呢?

我自己写了模块表单的文件 \dayrui\App\baoming\Controllers\Roster.php 在提交前增加了一个控制判断,可是还是不成功,达到最大量了,还是能报名。


<?php namespace Phpcmf\Controllers;

/**
 * 二次开发时可以修改本文件,不影响升级覆盖
 */

class Roster extends \Phpcmf\Home\Mform
{

    public function index() {
        $this->_Home_List();
    }

    public function show() {
        $this->_Home_Show();
    }

    public function post() {
        // 提交前的操作
        if(IS_POST){
        $a = \Phpcmf\Service::L('input')->get();
        $b = \Phpcmf\Service::M()->db->table(SITE_ID.'_baoming')->get($a['cid'])->getRowArray();
        $c = $b['roster_total'];
        $d = $b['quota'];
        $e = \Phpcmf\Service::M()->table(SITE_ID.'__baoming_form_roster')->where('cid', intval($a['cid']))->where('status', 1)->counts();
        if ($c >= $d){
         $this->_json(0, '提交失败,已超过报名人数');
        }
        }
        // 提交处理
        $this->_Home_Post();
    }
}


另外希望官方能协助帮忙一下,怎么完善在内容ID1的baoming表单里面,限制表单的title不能重复,因为不做这个现在官方的表单文件,人家提交的时候,按10下,就会有10个重复的表单提交。


应用版权:官方
应用名称:模块内容表单

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

回帖
  • 官方插件技术-岳老师
    #1楼    官方插件技术-岳老师
    2022-08-16 16:37:16
    Chrome 0
            $e = \Phpcmf\Service::M()->table(SITE_ID.'_baoming_form_roster')->where('cid', intval($this->index['id']))->where('status', 1)->counts();
            if ($e >= $this->index['roster_total']){
             $this->_json(0, '提交失败,已超过报名人数');
            }
  • 学生
    #2楼    学生
    2022-08-16 16:42:29
    Edge 0
    官方插件技术-岳老师

    牛!!要是能在解决 同一个内容下 表单 的 title 不可以重复就更好了!
  • 小孟学编程
    #3楼    小孟学编程
    2022-08-16 16:45:45
    Chrome 0
    这还不简单吗
    if (\Phpcmf\Service::M()->table(SITE_ID.'_baoming_form_roster')->where('title', $_POST['data']['title'])->counts()){
      $this->_json(0, '提交失败,标题重复了');
    }
  • 学生
    #4楼    学生
    2022-08-16 17:15:55
    Edge 0
    😀 大神好,这个是整个模块内容的表单不允许重名,但是总内容 cid1和 cid2的表单是可以重名的哦比如总内容 cid1下有个张三报名了,cid2张三还能报名,但是你上面的那个 如果cid1张三报名了,cid2 张三就不能报吗了。。。。小孟学编程
  • 小孟学编程
    #5楼    小孟学编程
    2022-08-16 17:19:44
    Chrome 0
    代码这玩意要学会变通
    if (\Phpcmf\Service::M()->table(SITE_ID.'_baoming_form_roster')->where('cid', intval($this->index['id']))->where('title', $_POST['data']['title'])->counts()){
  • 学生
    #6楼    学生
    2022-08-16 17:39:11
    Edge 0
    小孟学编程
    if (\Phpcmf\Service::M()->table(SITE_ID.'_baoming_form_roster')->where('cid', intval($this->index['id']))->where('title', $_POST['data']['title'])->counts()){
    改成这个后 不成功了,还是能疯狂的点击 重复提交。
  • 学生
    #7楼    学生
    2022-08-16 17:40:48
    Edge 0
    官方插件技术-岳老师
        $e = \Phpcmf\Service::M()->table(SITE_ID.'_baoming_form_roster')->where('cid', intval($this->index['id']))->where('status', 1)->counts();
            if ($e >= $this->index['roster_total']){
             $this->_json(0, '提交失败,已超过报名人数');
            }
    修改成这个 还是不成功,超过人数还是能继续提交……
  • 优速开发工作室
    #8楼    优速开发工作室
    2022-08-16 17:42:21
    Chrome 0
    十块钱帮你写代码 😁 😁
  • 么么哒
    #9楼    么么哒
    2022-08-30 00:45:34
    Chrome 0
    优速开发工作室 我的需求就是跟他一样但我是用官方的图书的章节表单,我想弄成以用户组来控制每个用户组的报名数量