
有很多小伙伴都遇到过这个问题,那到底为什么会这样呢?是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, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。


