PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

根据栏目获取全部文章

管理员 2024-12-14
Fastadmin
8

项目有个需求是,根据栏目的id,获取到此栏目下的所有文章。本来觉得这个非常小意思嘛,然后发现如果不是自己写的页面,要用到fastadmin的默认的文章页面的话,要修改的还是挺多的。做个小记录分享一下

需求如下:
image.png
这个是点击打开的弹窗,弹窗为一个fastamin的页面
image.png

现在开始修改:

1.先在列表添加对应的弹窗,修改请求路径

                        {                            field: 'buttons1',                            width: "120px",                            title: __('签到列表'),                            table: table,                            events: Table.api.events.operate,                            buttons: [{                                name: 'detail',                                text: __('签到列表'),                                title: __('签到列表'),                                classname: 'btn btn-xs btn-success btn-dialog',                                url: 'meeting_sign/index',                                callback: function (data) {                                    Layer.alert("接收到回传数据:" + JSON.stringify(data), {                                        title: "回传数据"                                    });                                },                                visible: function (row) {                                    //返回true时按钮显示,返回false隐藏                                    return true;                                }                            }],                            formatter: Table.api.formatter.buttons                        },

2.因为fastadmin是先渲染页面,然后在页面上发起ajax获取到数据,所以要在请求的控制器上,把id赋值到index页面,然后重新把id用路由的方式让ajax获取

现在这个控制器代码

    /**     * 查看     */    public function index($ids = null)    {        //当前是否为关联查询        $this->relationSearch = true;        //设置过滤方法        $this->request->filter(['strip_tags', 'trim']);        $this->view->assign('ids', $ids);        if ($this->request->isAjax())        {            //如果发送的来源是Selectpage,则转发到Selectpage            if ($this->request->request('keyField'))            {                return $this->selectpage();            }            $meeting_id = input("meeting_id");            //list($where, $sort, $order, $offset, $limit) = $this->buildparams();            list($subwhere, $sort, $order, $offset, $limit) = $this->buildparams();            $where = function ($query) use ($subwhere, $meeting_id) {                $query->where($subwhere)->where("meeting_id", $meeting_id);            };            $total = $this->model                    ->with(['user','meeting'])                    ->where($where)                    ->order($sort, $order)                    ->count();            $list = $this->model                    ->with(['user','meeting'])                    ->where($where)                    ->order($sort, $order)                    ->limit($offset, $limit)                    ->select();            foreach ($list as $row) {                $row->visible(['id','createtime']);                $row->visible(['user']);                $row->getRelation('user')->visible(['nickname']);                $row->visible(['meeting']);                $row->getRelation('meeting')->visible(['title']);            }            $list = collection($list)->toArray();            $result = array("total" => $total, "rows" => $list);            return json($result);        }        return $this->view->fetch();    }

此处注意,需要给获取方法添加上where条件

            $meeting_id = input("meeting_id");            //list($where, $sort, $order, $offset, $limit) = $this->buildparams();            list($subwhere, $sort, $order, $offset, $limit) = $this->buildparams();            $where = function ($query) use ($subwhere, $meeting_id) {                $query->where($subwhere)->where("meeting_id", $meeting_id);            };

3.在页面上添加隐藏的id

<input type="hidden" name="meeting_id" id="meeting_id" value="{$ids}">

4.在js上添加ajax的请求路由id

            var table = $("#table");            var meeting_id = $('#meeting_id').val(); // 初始化表格            table.bootstrapTable({                url: $.fn.bootstrapTable.defaults.extend.index_url + '&meeting_id=' + meeting_id,                pk: 'id',                sortName: 'id',                columns: [                    [                        {checkbox: true},                        {field: 'id', title: __('Id')},                        {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},                        {field: 'user.nickname', title: __('用户昵称')},                        {field: 'meeting.title', title: __('Meeting.title')},                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}                    ]                ]            });

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

扫码关注

qrcode

QQ交谈

回顶部