开发框架 版主:迅睿框架研发组
用户在会员中心模块下发布文章,需要有几个字段是固定的,不能让用户在前端改
类型:迅睿CMS 更新时间:2020-11-06 08:57:58

求助大神们,用户在会员中心模块下发布文章,需要有几个字段是固定的,不能让用户在前端改,所以隐藏域这种不太合适,如何在不需要官方文件的情况下在控制器里处理。我知道有用钩子和重写Content类的方式。不过我这样写 没用

// 内容发布之前
public function _content_post_before($id, $data, $old) {
    $data['jbjd'] = '3';
    return $data;
}

顺便还有个问题求助,模块表单有人留言后,如果通知作者,谢谢。

回帖
  • #1楼    迅睿框架创始人
    2020-11-04 21:38:13
    Chrome 0
    // 内容发布之前
    public function _content_post_before($id, $data, $old) {
        $data[填写:1或者0,1是主表,0是附表]['jbjd'] = '3';
        return $data;
    }
    打印下data就可以看格式了,一目了然,很容易看懂
    满意答案
  • 帝国织梦开发
    #2楼    帝国织梦开发
    2020-11-04 21:40:58
    Chrome 0
    主表字段:
    $data[1]['jbjd'] = '3';
    副表字段
    $data[0]['jbjd'] = '3';
    看你是什么表的字段
  • 丛林灰太狼
    #3楼    丛林灰太狼
    2020-11-04 21:42:17
    Chrome 0
    回复迅睿框架创始人 老大出马,太nb了,如果用钩子呢,我今晚看了一晚上钩子没稿明白。
    \Phpcmf\Hooks::on('module_content_before', function($data) {
        $data[1]['jbjd'] = '3';
    });
    这种就无法处理出来,趁老大在线,多学下!
  • #4楼    迅睿框架创始人
    2020-11-04 21:44:14
    Google Pixel 手机 0
    钩子不适合这种赋值,钩子只能强制中断数据,和执行其他sql语句或者程序段,他不能返回数据丛林灰太狼
  • 丛林灰太狼
    #5楼    丛林灰太狼
    2020-11-04 21:47:06
    Chrome 0
    回复迅睿框架创始人 那老大比如我第二个问题模块表单有人留言后,如何通知此文章作者,用钩子还是重写Content类,可以简单举个列子吗?程序我太菜了,在学习中。
  • #6楼    迅睿框架创始人
    2020-11-04 21:49:48
    Google Pixel 手机 0
    推荐这个,在提交成功后写通知代码丛林灰太狼 参考文档:《模块表单提交后的回调开发》
  • 丛林灰太狼
    #7楼    丛林灰太狼
    2020-11-04 22:00:15
    Chrome 0
    回复迅睿框架创始人 嗯,等下我继续试试这个,不过现在有点方啊,我希望审核后,继续修改这个字段的值,重写Content类
    // 内容审核操作之后
    public function _call_verify($data, $verify) {
        $data[1]['jbjd'] = '2';
        return $data;
    }
    就不行了。jbjd还是开始赋值的3,再后着脸求助下老大!
  • #8楼    迅睿框架创始人
    2020-11-04 22:03:05
    Google Pixel 手机 0
    上面写的是内容审核操作之后,已经审核了,意味着数据已经存储,就没办法赋值了,所以这里面是不能赋值写法的,只有
    _content_post_before
    可以赋值
  • 黄老邪
    #9楼    黄老邪
    2020-11-04 22:07:39
    Chrome 0
    // 内容审核操作之后
    public function _call_verify($data, $verify) {
        $verify = $this->table($this->mytable.'_verify')->get($verify['id']);
        $data = dr_string2array($verify['content']);
        $data[1]['jbjd'] = '2';
        $this->table($this->mytable.'_verify')->update($verify['id'], ['content' => dr_array2string($data)]);
        
    }
    给分吧,不些
  • 丛林灰太狼
    #10楼    丛林灰太狼
    2020-11-04 22:13:44
    Chrome 0
    黄老邪 我试了下 好像也不行 😂 jbjd的值还是3
  • 黄老邪
    #11楼    黄老邪
    2020-11-04 22:15:30
    Chrome 0
    // 内容审核操作之后
    public function _call_verify($data, $verify) {
        $verify = $this->table($this->mytable.'_verify')->get($verify['id']);
        $data = dr_string2array($verify['content']);
        $data['jbjd'] = '2';
        $this->table($this->mytable.'_verify')->update($verify['id'], ['content' => dr_array2string($data)]);
        
    }
  • 丛林灰太狼
    #12楼    丛林灰太狼
    2020-11-04 22:24:01
    Chrome 0
    回复迅睿框架创始人 老大,我试出来,这种好像可以,不过不知道我代码有问题吗?请老大看看!
    public function _call_verify($data, $verify) {
        \Phpcmf\Service::M()->table_site('jubao')->update($data['id'], [
            'jbjd' => 6,
        ]);
    }
  • #13楼    迅睿框架创始人
    2020-11-04 22:31:07
    Google Pixel 手机 0
    public function _call_verify($data, $verify) {
        \Phpcmf\Service::M()->table_site('jubao')->update($verify['id'], [
            'jbjd' => 6,
        ]);
    }
    参数改一下,这里只能去更新数据库值,不能赋值返回丛林灰太狼
  • 丛林灰太狼
    #14楼    丛林灰太狼
    2020-11-04 22:55:05
    Chrome 0
    回复迅睿框架创始人 老大,我看了下 您把
    update($data['id']
    改为
    update($verify['id']
    我试了下 2个都可以把jbjd字段更新,但是他们有什么区别呢。又来学习 😀
  • 丛林灰太狼
    #15楼    丛林灰太狼
    2020-11-06 08:57:58
    Chrome 0
    迅睿框架创始人:老大速度相当迅速,多谢