功能组件
多语言
在FastAdmin中可以在任何位置(控制器、视图、JS)使用__('语言标识');
调用语言包,如果语言标识不存在,则直接输出该语言标识
使用方法
__('My name is %s', "FastAdmin");
将会返回
My name is FastAdmin
如果需要在HTML
视图文件中使用多语言,则需要如下调用
{:__('Home')}
而在PHP
和JS
中均可以使用
__('Home')
加载方式
在FastAdmin当中,框架会自动按照当前请求的控制器进行加载对应的语言包。例如当前是中文环境,如果请求的是
https://demo.fastadmin.net/admin/dashboard/index
则FastAdmin会自动加载
application/admin/lang/zh-cn.php
application/admin/lang/zh-cn/Dashboard.php
文件上传
我们可以看到这里配置了一个文本框、一个上传按钮、一个选择按钮和一个预览的DIV
<div class="form-group">
<label for="c-avatar" class="control-label col-xs-12 col-sm-2">头像:</label>
<div class="col-xs-12 col-sm-8">
<div class="input-group">
<input id="c-avatar" data-rule="" class="form-control" size="50" name="row[avatar]" type="text" value="{$row.avatar}">
<div class="input-group-addon no-border no-padding">
<span><button type="button" id="plupload-avatar" class="btn btn-danger plupload" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-avatar"><i class="fa fa-upload"></i> 上传</button></span>
<span><button type="button" id="fachoose-avatar" class="btn btn-primary fachoose" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> 选择</button></span>
</div>
<span class="msg-box n-right" for="c-avatar"></span>
</div>
<ul class="row list-inline plupload-preview" id="p-avatar"></ul>
</div>
</div>
上传按钮支持属性
属性 | 示例值 | 说明 |
---|---|---|
data-url | ajax/upload | 用于配置上传文件接收的地址 |
data-multipart | {"key1":"value1"} | 用于上传时附加额外的参数信息 |
data-input-id | c-avatar | 用于填充返回URL地址的设文本框 |
data-mimetype | image/gif,image/png,image/jpg | 用于过滤允许上传的文件类型,支持mimetype或文件后缀名 |
data-multiple | false | 是否支持多图或多文件模式 |
data-preview-id | p-avatar | 用于预览返回URL地址的DIV |
data-maxsize | 10M | 用于限制最大可上传的文件大小 |
data-timeout | 60000 | 用于设定上传超时时长,60000表示60秒,默认为30秒 |
data-chunking | true | 是否启用分片上传,1.2.0版本新增 |
data-chunk-size | 2097152 | 分片单片文件大小,1.2.0版本新增 |
data-resize-quality | 0.8 | 设置上传图片的品质,1.2.0版本新增 |
data-resize-width | 1024 | 上传前剪裁图片宽度,1.2.0版本新增 |
data-resize-height | 768 | 上传前剪裁图片高度,1.2.0版本新增 |
data-chunk-size | 2097152 | 分片单片文件大小,1.2.0版本新增 |
选择按钮支持属性
属性 | 示例值 | 说明 |
---|---|---|
data-input-id | c-avatar | 用于填充返回URL地址的设文本框 |
data-mimetype | image/gif,image/png,image/jpg | 用于过滤允许上传的文件类型,支持mimetype或文件后缀名 |
data-multiple | false | 是否支持多图或多文件模式 |
data-preview-id | p-avatar | 用于预览返回URL地址的DIV |
上传按钮事件
属性 | 示例值 | 说明 |
---|---|---|
data-upload-success | function | 上传成功后会进行回调,需使用$("按钮").data("upload-success", function(){});赋值 |
data-upload-error | function | 上传失败后会进行回调,需使用$("按钮").data("upload-error", function(){});赋值 |
动态下拉(SelectPage)
FastAdmin中的动态下拉列表使用的是优秀强大的Selectpage
插件来支持,FastAdmin对其进行了二次开发
<input id="c-name" data-rule="required" data-source="category/selectpage" class="form-control selectpage" name="row[name]" type="text" value="">
其中需要给元素class
添加一个selectpage
,其次需要增加一个data-source="category/selectpage"
这个属性,category/selectpage
为我们控制器提交列表的方法
FastAdmin的Selectpage
列表中显示字段默认读取的是name
字段,如果我们返回的列表中不包含name
字段,将无法展现下拉列表数据。此时我们需要添加使用data-field="你要显示的字段"
即可,例如data-field="title"
FastAdmin的Selectpage
列表中主键字段默认读取的是id
字段,如果我们的主键不是id
字段,则我们可以添加并使用data-primary-key="你的主键ID字段"
来修改,例如data-primary-key="productid"
Selectpage所支持的扩展属性
属性 | 功能 | 示例 |
---|---|---|
data-source | 提供数据源的URL地址或JSON数据 | data-source="category/index" |
data-field | 列表显示读取的字段 | data-field="username" |
data-primary-key | 列表选中后渲染的字段 | data-primary-key="uid" |
data-pagination | 是否开启分页 | data-pagination="true" |
data-page-size | 分页大小 | data-page-size="10" |
data-multiple | 是否支持多选 | data-multiple="true" |
data-max-select-limit | 最多可选择数量 | data-max-select-limit="3" |
data-order-by | 排序字段 | data-order-by="id" |
data-params | 自定义扩展参数 | data-params='{"custom[type]":"test"}' |
data-select-only | 是否为只读模式 | data-select-only="true" |
data-format-item | 列表行模板 | data-format-item="{title} - {author}" |
disabled | 禁用SelectPage组件 | disabled |
富文本编辑器
FastAdmin的富文本编辑器只需要给对应的textarea
增加一个class
为editor
即可,FastAdmin在渲染时即会将textarea
渲染为富文本编辑器,目前支持summernote
、nkeditor
和ueditor
等富文本编辑器,需安装对应的插件即可正常使用
表单验证
在FastAdmin当中我们只需要给元素添加data-rule="规则"
即可开启表单验证,如下
<input id="c-title" class="form-control" data-rule="required;username" name="row[title]" type="text" value="" />
常用的规则如下
规则 | 描述 | 示例 |
---|---|---|
required | 字段必填 | required |
checked | 必选,只适用于checkbox和radio | checked |
match(name) | 当前字段值必须和 name 字段的值匹配 | match('row[username]') |
remote(URL) | 请求服务端验证 | remote(validate/check_username_unique) |
integer | 整数 | integer |
range(n~) | 数值范围, 请填写不小于 n 的数 | range(3~) |
length(n) | 请填写 n 个字符 | length(3) |
digits | 必须为数字 | digits |
letters | 必须为字母 | letters |
date | 必须为日期,yyyy-mm-dd格式 | date |
time | 必须为时间,hh:ii格式 | time |
必须为email格式 | ||
url | 必须为URL链接 | url |
必须为QQ号 | ||
IDcard | 必须为身份证号码 | IDcard |
tel | 必须为电话号码 | tel |
mobile | 必须为手机号码 | mobile |
zipcode | 必须为邮编 | zipcode |
chinese | 必须为中文字符 | chinese |
username | 必须为3-12位数字、字母、下划线 | username |
password | 必须为6-16位字符,不能有空格 | password |
如果常用规则不满足开发需求,可以采用自定义规则来实现,如下:
<input id="c-title" class="form-control" data-rule="required;diyname" name="row[title]" type="text" value="" />
然后在JS中定义规则的实现方法,如下:
$.validator.config({
rules: {
diyname: function (element) {
//如果直接返回文本,则表示失败的提示文字
//如果返回true表示成功
//如果返回Ajax对象则表示远程验证
if (element.value.toString().match(/^\d+$/)) {
return '不能为纯数字';
}
if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
return '请输入字母或数字组合';
}
return $.ajax({
url: 'ajax/check',
type: 'POST',
data: {id: $("#c-title").val(), name: element.name, value: element.value},
dataType: 'json'
});
}
}
});
城市选择
我们只需要简单的为input
元素添加一个data-toggle="city-picker"
属性即可自动渲染相应的城市选择组件,如下
<div class='control-relative'>
<input id="c-city" class="form-control" data-toggle="city-picker" name="row[city]" type="text" value="" />
</div>
我们还可以通过添加以下属性来扩展城市选择组件的功能
属性 | 描述 | 示例 |
---|---|---|
data-level | 选择城市的级别,支持province/city/district,默认为district | data-level="city" |
data-simple | 使用简单的地址,比如使用内蒙古替代内蒙古自治区,默认为false | data-simple="true" |
data-responsive | 是否为自适应,默认为false | data-responsive="true" |
placeholder | 默认提示的文字 | placeholder="请选择省/市" |
日期时间
在FastAdmin中的日期时间组件采用的是Bootstrap-datetimepicker
插件
我们在使用只可以为文本框添加一个class为datetimepicker
的值即可自动添加日期时间选择框
同时我们还可以通过配置以下属性来自定义我们日期选择器的功能
属性 | 描述 | 示例 |
---|---|---|
data-date-format | 日期时间的格式,支持Moment.js的格式 | data-date-format=" YYYY-MM-DD" |
data-date-min-date | 最小可选择的日期 | data-date-min-date="2011-10-01" |
data-date-max-date | 最大可选择的日期 | data-date-max-date="2046-10-01" |
data-date-use-current | 使用当前的日期时间 | data-date-use-current="true" |
data-date-default-date | 默认日期 | data-date-default-date="2011-10-01" |
data-date-disabled-dates | 禁用的日期组 | data-date-disabled-dates='["2011-10-02"]' |
data-date-enabled-dates | 可用的日期组 | data-date-enabled-dates='["2011-10-02"]' |
data-date-use-strict | 使用严格的日期时间,错误日期将被忽略 | data-date-use-strict="true" |
data-date-side-by-side | 日期时间并排显示 | data-date-side-by-side="true" |
下拉列表
在FastAdmin中集成了Bootstrap-select
插件,可以对原有的select
元素重新渲染,并增加相应的功能
我们可以直接给select
元素添加一个class
为selectpicker
的值即可,FastAdmin在检测到以后会自动进行渲染
我们同时可以给select
添加以下属性用于配置selectpicker
属性 | 介绍 | 添加位置 | 示例 |
---|---|---|---|
data-live-search | 是否启用动态搜索 | select | data-live-search="true" |
data-tokens | 添加搜索的关键字 | option | data-tokens="keyword keyword2" |
data-max-options | 最大可选择option的数量 | select或optgroup | data-max-options="2" |
title | 自定义默认提示语 | select | title="请选择相应的分类" |
title | 自定义选中以后显示的文字 | option | title="分类1" |
data-style | 定义样式 | select | data-style="btn-primary" |
开关组件
使用开关组件只需要给我们的操作按钮添加data-toggle="switcher"
即可,如下:
<input id="c-switch" name="row[switch]" type="hidden" value="0">
<a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-switch" data-yes="1" data-no="0" >
<i class="fa fa-toggle-on text-success {eq name="$row.switch" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
</a>
开关提示
从1.2.0版本开始,开关组件支持切换前提示,请尝试给a标签添加一个data-confirm属性即可,如下:
<input id="c-switch" name="row[switch]" type="hidden" value="0">
<a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-switch" data-yes="1" data-no="0" >
<i class="fa fa-toggle-on text-success {eq name="$row.switch" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
</a>
开关事件
如果你需要监听开关切换后的事件,可以在JS中给隐藏的input
文本框添加一个change
事件,如下:
$(document).on("change", "#c-switch", function(){
//开关切换后的回调事件
});
日期时间区间
在FastAdmin中的日期时间区间组件采用的是Bootstrap-daterangepicker
插件
我们在使用只可以为文本框添加一个class
为datetimerange
的值即可自动添加日期时间区间选择框
<input type="text" class="form-control datetimerange" placeholder="指定日期" />
<input type="text" class="form-control datetimerange" placeholder="指定日期" value="2021-03-30 00:00:00 - 2021-03-30 23:59:59" />
同时我们还可以通过配置以下属性来自定义我们日期选择器的功能
属性 | 描述 | 示例 |
---|---|---|
data-time-picker | 是否启用时间选择 | data-time-picker="true" |
data-start-date | 开始日期 | data-date-min-date="2011-10-01" |
data-end-date | 结束日期 | data-date-max-date="2046-10-01" |
data-min-date | 最小可选择的日期 | data-date-use-current="true" |
data-max-date | 最大可选择的日期 | data-date-default-date="2031-10-01" |
date-show-dropdowns | 是否显示年月下拉 | ... |
data-min-year | 最小的年 | data-min-year=2021 |
data-max-year | 最大的年 | data-max-year=2046 |