fastadmin框架常用知识点

背景:

 最近在维护一个由fastadmin框架搭建的网站,第一次接触fastadmin,在维护的过程中遇到了一些大大小小的问题,记录下来,以供其他初学者参考;

知识点:

1. 列表页指定字段取消筛选操作?

    答:在指定的js文本中,添加属性 operate:false

 {field: 'ceshi', title: __('Ceshi'), operate:false},

2. 列表页筛选区域的select赋初始默认值?

   答: 在指定的js文本中,添加属性 defaultValue:1

 {field: 'ceshi', title: __('Ceshi'),searchList: {"1": __('yes'), "2": __('no')},defaultValue:1},

3. 列表页指定字段不在表格中显示,但是在筛选框中能够显示并筛选?

   答:在指定的js文本中,添加属性 visible:false

 {field: 'ceshi', title: __('Ceshi'),visible:false},

4. 根据条件显示或隐藏按钮?

    答:在指定的js文本中,添加方法 hidden visible

  {field: 'ceshi', title: __('Ceshi'), operate:false, table: table,formatter: Table.api.formatter.buttons,buttons:
                                [
                                    {
                                        name: 'open', text: '未开通',  title: '去开通',
                                        classname: 'btn btn-xs btn-primary btn-dialog', url: function(row, column){
                                            return "user/test/open?id="+row.id+"&name="+row.name;
                                        },
                                        hidden:function(row){
                                            if(row.status!= 1){
                                                return true;
                                            }
                                        },
                                        visible:function(row){
                                            if(row.cicada == 0 && row.ishas== 2){
                                                return true;
                                            }
                                        },
                                    }]}

5. 自定义按钮添加角色权限

    答: 在列表页index.html的操作中经常会添加一些自定义按钮,如问题4内的按钮代码;总后台权限管理中的角色管理,不同角色展示不同内容。此时,需要修改列表页index.html,添加  data-operate-open="{:$auth->check('user/test/open')}"

<div class="panel panel-default panel-intro">
    {:build_heading()}

    <div class="panel-body">
        <div id="myTabContent" class="tab-content">
            <div class="tab-pane fade active in" id="one">
                <div class="widget-body no-padding">
                    <div id="toolbar" class="toolbar">
                        {:build_toolbar('refresh')}
                    </div>
                    <table id="table" class="table table-striped table-bordered table-hover"
                           data-operate-detail="{:$auth->check('user/test/detail')}"
                           data-operate-edit="{:$auth->check('user/test/edit')}"
                           data-operate-open="{:$auth->check('user/test/open')}"
                           width="100%">
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

6. 校验表单input格式

    要求必填,且长度范围在6-32位;其它校验可参考官方文档;表单验证

   <div class="col-xs-12 col-sm-8">
      <input id="c-account" data-rule="required;length(6~32);" class="form-control" name="row[account]" type="text" placeholder="请输入您的账号" >
   </div>

7. 工具栏‘添加按钮’传递参数

  需求:根据传的参数id值,添加页面展示不同的内容

 答:1. location.search为当前页面的url参数; 在js中 add_url 最后面添加即可;

  add_url: 'edu/user/add'+location.search,

        2. 在控制器中的add方法get请求可以接收参数

$id = $this->request->param('id');

8. selectpage下拉框实现动态调取源数据

 答: data-scource调取数据源地址;

       源数据如果不是id,name 可通过data-primary-key="你的主键ID字段"data-field="你要显示的字段"修改;

      data-params 进行动态传参;

<div class="col-xs-12 col-sm-8">
   <!--多选-->
   <input id="c-test" data-rule="required" data-multiple="true" data-source="test/abc/passabc" data-pagination="true" data-page-size="10" data-params={"custom[merchantsid]":""}  class="form-control selectpage" name="row[test]" type="text" value="">
 </div>

  对应的js写方法动态传参:

add: function () {
      $("#c-test").data("params", function (obj) {
         return {custom: {merchantsid: $("#merchants_id").val()}};
      });
    Controller.api.bindevent();
 },

对应test/abc/passabc的php代码:

 public function passsabc(){
        $page = $this->request->request("pageNumber");
        $pagesize = $this->request->request("pageSize");
        $request = $this->request->request();
         
         //动态接收参数
        $merchants_id = isset($request['custom']['merchantsid'])?$request['custom']['merchantsid']:'';
        if($merchants_id != ''){
            $where['merchants_id'] = $merchants_id;
        }

        $where['status'] = 2;
        $list = $this->model->field('`shop_id` as id,`shop_name` as name')->where($where)->select();

        //添加搜索功能
        $q_word = $this->request->request("q_word/a");
        if(!empty($q_word[0])){
            $data = [];
            foreach ($list as $item) {
                if(strpos($item['name'], $q_word[0]) !== false){
                    array_push($data,$item);
                }
            }
            $list = $data;
        }

        if($this->request->request("keyValue")){
            $arr = explode(',',$this->request->request("keyValue"));
            $newlist = array();
            foreach ($list as $k=>$v){
                if(in_array($v['id'],$arr)){
                    $newlist[] = $list[$k];
                }
            }
            return ['total'=>count($newlist), 'list'=>$newlist];
        }

        $total = count($list);
        $list = $this->page_array($pagesize,$page,$list,0);
        return json(['list' => $list, 'total' => $total]);
    }

    public function page_array($count,$page,$array,$order){
        global $countpage; #定全局变量
        $page=(empty($page))?'1':$page; #判断当前页面是否为空 如果为空就表示为第一页面
        $start=($page-1)*$count; #计算每次分页的开始位置
        if($order==1){
            $array=array_reverse($array);
        }
        $totals=count($array);
        $countpage=ceil($totals/$count); #计算总页面数
        $pagedata=array();
        $pagedata=array_slice($array,$start,$count);
        return $pagedata;  #返回查询数据
    }

9. SearchList下拉框如何去除‘选择’空选项

需求:去除下拉框中的‘选择’,只留选项‘禁用’/‘可用’

解决: 在相应的js文本中,var table=$("#table")之后插入以下代码:

   //10-27 指定下拉框去除空选项
   table.on('load-success.bs.table', function (e, $table) {
         $("option[value='']",$("select[name='指定name值']")).remove();
    });

注: 后续会逐步补充遇到的问题及解决方法

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastAdmin框架中配置邮件功能,你需要进行以下步骤: 1. 打开FastAdmin框架的配置文件 `application/config.php`,找到以下配置项: ```php // 邮件发送配置 'mail' => [ // 邮件发送服务器地址 'host' => '', // 邮件发送服务器端口 'port' => 25, // 发件人邮箱地址 'username' => '', // 邮箱登录密码 'password' => '', // 邮件发送者名称 'fromname' => '', ], ``` 2. 在上述配置项中,将`host`设置为你的邮件发送服务器地址,`port`设置为邮件发送服务器端口。 3. 将`username`设置为发件人的邮箱地址,`password`设置为邮箱的登录密码。 4. 将`fromname`设置为邮件发送者的名称。 注意:如果你使用的是SMTP服务器进行邮件发送,可以将配置项中的`host`设置为SMTP服务器的地址,同时设置对应的端口、用户名和密码。如果你使用的是本地服务器发送邮件,则可以使用默认的配置。 完成以上配置后,FastAdmin框架就可以使用邮件功能了。你可以通过调用框架提供的邮件发送方法来发送邮件,例如使用`sendmail`函数: ```php \think\facade\Env::get('app.mail.username') // 获取发件人邮箱地址 \think\facade\Env::get('app.mail.fromname') // 获取邮件发送者名称 // 发送邮件 \think\facade\Mail::send($to, $subject, $content, $attachment); ``` 其中,`$to`为收件人邮箱地址,`$subject`为邮件主题,`$content`为邮件内容,`$attachment`为邮件附件(可选)。 希望以上信息能对你有所帮助!如有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值