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

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

分享 首次访问控制器时候设置ajax的参数 透传 assingconfig id 带参数跳转 index 参数 自定搜索

管理员 2024-12-14
Fastadmin
7

问题

我们在开发中会经常遇到,在访问index方法的时候需要传递一个参数,来显示我们规定的拥有统一标志的数据

思路

  1. 通过URL传递一个参数给index!

    • 由于访问的index方法常由ajax发起 所以参数不会生效!
  2. 在ajax发起的时候就追加一个搜索条件 例如 $group_id=1

正确姿势

  • 在控制器中 使用assignconfig()方法给js透传参数

    public function index($ids=NULL) //需要从URL接收参数  {      //当前是否为关联查询      $this->relationSearch = false;      //设置过滤方法      $this->request->filter(['strip_tags']);      if ($this->request->isAjax())      {          list($where, $sort, $order, $offset, $limit) = $this->buildparams();          $total = $this->model                                    ->where($where)                  ->order($sort, $order)                  ->count();          $list = $this->model                                    ->where($where)                  ->order($sort, $order)                  ->limit($offset, $limit)                  ->select();          foreach ($list as $row) {              $row->visible(['taxState']);                        }          $list = collection($list)->toArray();          $result = array("total" => $total, "rows" => $list);          return json($result);      }      $this->assignconfig("group_id",$ids); //在这里透传给js      return $this->view->fetch();  }
  • 对应js中接收数据并拼接到搜索的条件中去

     // 初始化表格参数配置          Table.api.init({              extend: {                  index_url: 'test/index',                  add_url: 'test/add',                  edit_url: 'test/edit',                  del_url: 'test/del',                  multi_url: 'test/multi',                  table: 'test',              },            queryParams: function (params) { //自定义搜索条件                  var filter = params.filter ? JSON.parse(params.filter) : {}; //判断当前是否还有其他高级搜索栏的条件                  var op = params.op ? JSON.parse(params.op) : {};  //并将搜索过滤器 转为对象方便我们追加条件                  filter.group_id= Config.group_id;     //将透传的参数 Config.group_id,追加到搜索条件中                  op.group_id= "=";  //group_id的操作方法的为 找到相等的                  params.filter = JSON.stringify(filter); //将搜索过滤器和操作方法 都转为JSON字符串                  params.op = JSON.stringify(op);                  >   //如果希望忽略搜索栏搜索条件,可使用                  //params.filter = JSON.stringify({url: 'login'});                  //params.op = JSON.stringify({url: 'like'});                  return params;                                    },          });

    更给力的办法

  • 不修改控制器只需要修改js中发起ajax时候的参数即可

    queryParams: function (params) { //自定义搜索条件                  var filter = params.filter ? JSON.parse(params.filter) : {}; //判断当前是否还有其他高级搜索栏的条件                  var op = params.op ? JSON.parse(params.op) : {};  //并将搜索过滤器 转为对象方便我们追加条件                  filter.group_id= Fast.api.query("group_id");     //将需要的参数group_id 加入到搜索条件中去 要求url传递的参数必须为group_id=XX;可以用 Fast.api.query("group_id")获取到!                  op.group_id= "=";  //group_id的操作方法的为 找到相等的                  params.filter = JSON.stringify(filter); //将搜索过滤器和操作方法 都转为JSON字符串                  params.op = JSON.stringify(op);                  >   //如果希望忽略搜索栏搜索条件,可使用                  //params.filter = JSON.stringify({url: 'login'});                  //params.op = JSON.stringify({url: 'like'});                  return params;                                    },

    思考

    1. 如果有很多参数要传递时候,应该使用数组。
    2. 如果不带参数访问的情况应该有反馈。

    PS.

    1. 本人美工,大神勿喷!
    2. 方法为社区搜索整理来的,代码多来自Karson大神的demo。
    3. 有误或不详尽的地方,欢迎回帖指正、补充。
    4. 若本帖对你有所帮助,请点赞!请收藏!

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

相关推荐

扫码关注

qrcode

QQ交谈

回顶部