联系官方销售客服

1835022288

028-61286886

开发框架 版主:迅睿框架研发组
想在前台会员中心,显示同用户组发布的内容
类型:迅睿CMS 更新时间:2020-10-29 19:22:45

想在前台会员中心,显示同用户组发布的内容。我参照这个解答:https://www.xunruicms.com/wenda/23914.html,《table类增加列表查询条件》

修改了/dayrui/App/Demo/Controllers/Member/Home.php文件,

<?php namespace Phpcmf\Controllers\Member;

class Home extends \Phpcmf\Member\Module
{

 // 内容列表
 public function index() {
    if ($this->member['groupid']) { 
       $where = " uid in (select uid from ".\Phpcmf\Service::M()->dbprefix('member_group_index')." where gid in(".implode(",", $this->member['groupid'])."))";

       if ($this->init['where_list']) {
           $this->init['where_list'].= ' or '.$where;
           // 考虑到父类也许有可能会自带条件,防止被覆盖默认条件,所以追加一个 AND
       } else {
           $this->init['where_list'] = $where;
       }
    }
       $this->_Member_List();
}

 public function add() {
  $this->_Member_Add();
 }

 public function edit() {
     if ($this->member['groupid']) { 
       $where = " uid in (select uid from ".\Phpcmf\Service::M()->dbprefix('member_group_index')." where gid in(".implode(",", $this->member['groupid'])."))";

       if ($this->init['where_list']) {
           $this->init['where_list'].= ' or '.$where;
           // 考虑到父类也许有可能会自带条件,防止被覆盖默认条件,所以追加一个 AND
       } else {
           $this->init['where_list'] = $where;
       }
    }
  $this->_Member_Edit();
 }

 public function del() {
  $this->_Member_Del();
 }
}


我用同用户组账号登录,内容列表是显示出来了,但是点击编辑的时候,提示“数据#1不存在”

{xunruicms_img_title}


{xunruicms_img_title}

回帖
  • #1楼    迅睿框架创始人
    2020-10-28 10:53:23
    Chrome 0
    说明id=1的记录不满足条件了
  • #2楼    迅睿框架创始人
    2020-10-28 10:53:56
    Chrome 0
    你自己可以研究一下原理,思路就是这个方向
  • 草木人
    #3楼    草木人
    2020-10-28 11:23:54
    Chrome 0
    用发布账号登录是能编辑的,而且我看了编辑的链接是一样的。。。/index.php?s=member&app=zccx&c=home&m=edit&id=1回复迅睿框架创始人
  • 草木人
    #4楼    草木人
    2020-10-28 16:46:05
    Chrome 0
    这个edit,除了/dayrui/App/Demo/Controllers/Member/Home.php,是不是还有其他地方有关联?比如del我也按照上面的代码添加了,但是提示不能删除别人的内容,这个不是这里控自的,应该还有其他地方在控自
    public function del() {
    	    if ($this->member['groupid']) { 
           $where = " uid in (select uid from ".\Phpcmf\Service::M()->dbprefix('member_group_index')." where gid in(".implode(",", $this->member['groupid'])."))";
    
           if ($this->init['where_list']) {
               $this->init['where_list'].= ' or '.$where;
               // 考虑到父类也许有可能会自带条件,防止被覆盖默认条件,所以追加一个 AND
           } else {
               $this->init['where_list'] = $where;
           }
        }
    		$this->_Member_Del();
    	}
    回复迅睿框架创始人
  • #5楼    迅睿框架创始人
    2020-10-28 16:53:28
    Chrome 0
    where_list用于列表显示,删除不能用这种

    public function del() {
         if ($this->member['groupid']) { 
           $this->delete_where = "uid in (select uid from ".\Phpcmf\Service::M()->dbprefix('member_group_index')." where gid in(".implode(",", $this->member['groupid'])."))";
    
       
        }
      $this->_Member_Del();
     }
  • 草木人
    #6楼    草木人
    2020-10-28 17:01:35
    Chrome 0
    老大,会员中心同会员组能查看了,但是同会员组不能编辑其他人发布的内容,这个帮忙研究一下,我没搞定啊
    public function edit() {
         if ($this->member['groupid']) { 
           $where = " uid in (select uid from ".\Phpcmf\Service::M()->dbprefix('member_group_index')." where gid in(".implode(",", $this->member['groupid'])."))";
    
           if ($this->init['where_list']) {
               $this->init['where_list'].= ' or '.$where;
               // 考虑到父类也许有可能会自带条件,防止被覆盖默认条件,所以追加一个 AND
           } else {
               $this->init['where_list'] = $where;
           }
        }
      $this->_Member_Edit();
     }

    回复迅睿框架创始人
  • #7楼    迅睿框架创始人
    2020-10-28 17:04:04
    Chrome 0
    同理啊where_list用于列表显示,编辑不能用这种
    public function edit() {
    if ($this->member['groupid']) { 
           $this->edit_where = "uid in (select uid from ".\Phpcmf\Service::M()->dbprefix('member_group_index')." where gid in(".implode(",", $this->member['groupid'])."))";
    
       
        } 
        $this->_Member_Edit();
     }

  • 草木人
    #8楼    草木人
    2020-10-28 17:16:15
    Chrome 0
    点编辑还是提示数据#2不存在,/index.php?s=member&app=zccx&c=home&m=edit&id=2
    这个id=2是同会员组另外的账号发布的,id=1是自己发布的,没问题
    	public function edit() {
    	    if ($this->member['groupid']) {
           $this->edit_where = "uid in (select uid from ".\Phpcmf\Service::M()->dbprefix('member_group_index')." where gid in(".implode(",", $this->member['groupid'])."))";
            }
    		$this->_Member_Edit();
    	}
    回复迅睿框架创始人
  • #9楼    迅睿框架创始人
    2020-10-28 17:41:12
    Chrome 0
    这句话的意思是,编辑自己的文章,并且是同一个用户组的文章,记住,用户中心直接编辑自己的文章,不能编辑其他人的
  • 草木人
    #10楼    草木人
    2020-10-28 18:20:45
    Chrome 0
    那想实现同会员组的都能编辑,有没有什么办法?回复迅睿框架创始人
  • 曼德拉的铅笔
    #11楼    曼德拉的铅笔
    2020-10-28 18:37:47
    Chrome 0
    用户中心不能编辑别人的内容
  • K大帅
    #12楼    K大帅
    2020-10-29 09:47:55
    Chrome 0
    想在会员中心编辑他们的文章 这是犯程序的大忌呀。。。。去修改核心的类 把那句判断删掉吧草木人
  • K大帅
    #13楼    K大帅
    2020-10-29 09:50:54
    Chrome 0


    满意答案
  • 草木人
    #14楼    草木人
    2020-10-29 19:22:45
    Chrome 0
    @K大帅:不用会员中心了处理这个了,我用后台角色登陆管理了