当开发者使用模块表单时,可以对一篇内容进行提交子内容,也就是下级内容,如何来判断本次模块表单提交的某个字段例如title是否在当前子内容中重复提交过呢?

part-00278-1484

需要二次开发模块表单的控制器,例如demo模块的test模块表单

那么,他的模块表单控制器路径是:dayrui/App/Demo/Controllers/Test.php

<?php namespace Phpcmf\Controllers;

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

class Test extends \Phpcmf\Home\Mform
{

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

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

    public function post() {
    
        if (IS_POST) {
            // 这里表示提交之前
            $post = \Phpcmf\Service::L('input')->post('data');
            $this->index = $this->_Module_Row($this->cid);
            if (\Phpcmf\Service::M()->table($this->init['table'])
            ->where('cid', $this->index['id'])
            ->where('title', $post['title'])->counts()) {
                $this->_json(0, 'title字段的值已经存在,不能重复提交');
            }
            
        }
    
        $this->_Home_Post();
    }
}

方法二:我们以文章News模块为例,新建dayrui/App/Demo/Models/Content.php(推荐)

<?php namespace Phpcmf\Model\News;

// 模块内容模型类

class Content extends \Phpcmf\Model\Content {

    // 内容发布之前
    public function _content_post_before($id, $data, $old) {
        if ($this->db->table($this->mytable)->where('id<>', (int)$id)->where('title', $data[1]['title'])->countAllResults()) {
            return dr_return_data(0, '该标题已存在,请不要重复发布!');
        }
        return $data;
    }

}

此函数_content_post_before表示内容发布之前的操作,这里通常可以对数据进行验证并返回