有很多小伙伴都遇到过这个问题,那到底为什么会这样呢?是Selectpage的BUG,还是FastAdmin的BUG?其实都不是,这是因为你采用了自定义数据源导致未处理编辑时的数据导致的。
我们都知道在FastAdmin中可以给input
添加selectpage
的class
和data-source
属性值后就可以使用动态下拉列表,但往往我们会忽略对编辑时的特殊处理。
例如:
通常情况下我们的数据源data-source="category/selectpage"
,当我们点击selectpage文本框时,请求的参数为:
q_word[]: 名称pageNumber: 1pageSize: 10andOr: ANDorderBy[0][]: nameorderBy[0][]: ASCsearchTable: tblshowField: namekeyField: idsearchField[]: namename: 名称
服务器返回的数据数据如下:
{ "total": 2, "list": [ { "id": "1", "name": "名称1" }, { "id": "2", "name": "名称2" } ]}
我们的list数据是一个二维数组,返回以上数据在添加时使用时没有任何问题的。但是我们在进入编辑页面时,Selectpage
会首先向category/selectpage
这个链接请求一次当前编辑项所对应的数据。
我们通过Chrome的开发者控制台
中的Network
中可以看到请求的参数是
searchTable: tblsearchKey: idsearchValue: 2orderBy[0][]: nameorderBy[0][]: ASCshowField: namekeyField: idkeyValue: 2searchField[]: name
比我们正常请求多了个keyValue
,我们可以在我们的数据源data-source="category/selectpage"
中判断下如果存在keyValue
值时只返回与keyValue
值有关联的数据,例如我们在category/selectpage
中加个判断如下:
if($this->request->request("keyValue")){ return ['total'=>1, 'list'=>[ ['id'=>2, 'name'=>'名称2'] ] ];}
通过以上判断后我们在编辑时就不会始终显示的是列表中的第一项数据了。
同理如果我们启用了data-multiple="true"
时,此时我们判断keyValue
时应该只返回与之关联的多个数据。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。