fastadmin数据库后缀为_id的字段,主键不是id

fastadmin在一键curd时会将后缀为_id的字段识别为表外键,在新增记录时无论填入任何值都和报错“xxx_id不能为空”,这是因为fastadmin将其识别为了外键在add.html语句中这个字段的input是这样的:

Markup

<inputid="c-xxx_id"data-rule="required"data-source="xxx/index"class="form-control selectpage"data-field="name"name="row[xxx_id]"type="text"value="">

其中data-field是我加上去的,这个字段的默认值就是name

以下摘自fastadmin文档

FastAdmin中的动态下拉列表使用的是优秀强大的Selectpage插件来支持,FastAdmin对其进行了二次开发。

下面介绍一个最基础的动态下拉列表示例,如下

其中需要给元素class添加一个selectpage,其次需要增加一个data-source="category/selectpage"这个属性,category/selectpage为我们控制器提交列表的方法

FastAdmin的Selectpage列表中显示字段默认读取的是name字段,如果我们返回的列表中不包含name字段,将无法展现下拉列表数据。此时我们需要添加使用data-field="你要显示的字段"即可。

FastAdmin的Selectpage列表中主键字段默认读取的是id字段,如果我们的主键不是id字段,则我们可以添加并使用data-primary-key="你的主键ID字段"来修改。

所以这里需要将data-field 设置为正确的字段,这样就能正常显示了。

如果需要修改一键curd生成的代码,则需要找到相关代码,下面列一下相关代码的位置:

列表展示代码:fastadmin目录\public\assets\js\backend\控制器名.js js文件里面主要以js代码的形式展示列表,用的是bootstrap-table

新增记录代码:fastadmin目录\application\admin\view\控制器名\add.html html文件

修改记录代码:fastadmin目录\application\admin\view\控制器名\edit.html html文件

展示记录代码:fastadmin目录\application\admin\view\控制器名\index.html html文件

如需修改服务端代码打开对应的控制器修改就行了,打开之后发现,咦?怎么只有一个index方法,add方法和edit方法去哪里了?不要怕,add方法和edit方法都在父类Backend类里了,只需要去父类复制一下在控制器里重写就可以了,是不是很简单?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。