让你少踩坑的fastadmin教程(2)

简介: 让你少踩坑的fastadmin教程

五、请求接口返回403

将以下代码添加到api基类即可

header("Access-Control-Allow-Methods: *");
header('Access-Control-Allow-Origin: 域名');
header("access-control-allow-credentials: true");
// 响应头设置
// header('Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token');
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
    // 浏览器页面ajax跨域请求会请求2次,
    // 第一次会发送OPTIONS预请求,不进行处理,直接exit返回,
    // 但因为下次发送真正的请求头部有带token,
    // 所以这里设置允许下次请求头带token否者下次请求无法成功
    header('Access-Control-Allow-Headers:x-requested-with,content-type,token,userid,laravelsession');
    exit("ok");
}

image.png

然后将跨域检测注释掉


image.png


六、解决列表页显示的是分类ID而不是分类名称

其实这个问题很好解决,不要想的太过复杂。


你可以试想一下在thinkphp框架是怎么解决这个问题的。


在thinkphp中解决这个问题就是使用获取器来处理的。


只需要在对应的模型中设置获取器即可。


image.png


页面显示


image.png


但是真的是这样处理的吗?不要一看数据出来了,就万事大吉了。


你可以思考一下,在index页面没有显示出分类的名字,但是在修改时却出现了名字。


那么是不是可以得出的结论为首页没有使用获取器,而add、edit页面使用了获取器。


若按照上边的方法,直接暴力的在模型中添加获取器,会造成一个非常严重的问题,那就是修改会无法显示数据。不信你可以试一下。


就跟下图一样,这不是闹玩呢木。


所以说这种方案肯定不行。


image.png


试想一下,在thinkphp框架中,除了获取器可以表字段处理外,同样使用模型关联也可以。当然用最原始的json方法也是可以的。


在fastadmin中,控制器的方法都继承于application/admin/library/traits/Backend.php这个文件中。


在这个文件中可以看到index方法


image.png


那只能做的一件事情就是在需要显示分类名称的控制器中重写这个方法index呗!


在重写之前需要做的一件事情就是需要在对应的模型中写上模型关联


image.png


然后在你需要的控制器上重写index代码

image.png



源码

    /**
     * 查看
     */
    public function index()
    {
        //设置过滤方法
        $this->request->filter(['strip_tags', 'trim']);
        if ($this->request->isAjax()) {
            //如果发送的来源是Selectpage,则转发到Selectpage
            if ($this->request->request('keyField')) {
                return $this->selectpage();
            }
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
            $list = $this->model
                ->with('category')
                ->where($where)
                ->order($sort, $order)
                ->paginate($limit);
            $result = array("total" => $list->total(), "rows" => $list->items());
            return json($result);
        }
        return $this->view->fetch();
    }


到这里可并没有万事大吉啊!还需要修改模板,在对应的js文件中添加即可

{field: 'category.name', title: __('分类名称'), formatter:Table.api.formatter.



image.png


文档中说是还需要设置属性设置属性protected $relationSearch = true;,反正咔咔测试设置不设置都一样,你们看着来,目前还没发现这个参数到底是控制什么的。官方文档说是控制开启关联查询,但是经测试,好像没什么大碍。


来看一下最终结果吧!


image.png


如果只是一对一那解决方案会有很多种。


你可以使用json来直接查询,同样你也可以循环查询出来的数据,然后根据每个分类ID进行查询出对应的分类名即可。


相关文章
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
分享68个Python爬虫源码总有一个是你想要的
分享68个Python爬虫源码总有一个是你想要的
204 0
|
JavaScript 前端开发 数据库
让你少踩坑的fastadmin教程(3)
让你少踩坑的fastadmin教程
1374 0
让你少踩坑的fastadmin教程(3)
|
3月前
|
数据采集 前端开发 JavaScript
《花100块做个摸鱼小网站! 》第四篇—前端应用搭建和完成第一个热搜组件
本文档详细介绍了从零开始搭建一个包含前后端交互的热搜展示项目的全过程。通过本教程,读者不仅能学习到完整的项目开发流程,还能掌握爬虫技术和前后端交互的具体实践。适合有一定编程基础并对项目实战感兴趣的开发者参考。
84 1
|
6月前
|
数据库
一款挺不错网站维护页面源码
一款挺不错网站维护页面源码,单HTML不需要数据库,上传到你的虚拟机就可以用做维护页面还不错,用处多。。
45 2
一款挺不错网站维护页面源码
|
6月前
|
数据采集 数据可视化 Java
分享66个Python爬虫源码总有一个是你想要的
分享66个Python爬虫源码总有一个是你想要的
210 1
|
6月前
|
数据采集 JavaScript 前端开发
分享58个NodeJs爬虫源码总有一个是你想要的
分享58个NodeJs爬虫源码总有一个是你想要的
82 4
|
6月前
|
存储 JavaScript 前端开发
分享72个NodeJs项目源码总有一个是你想要的
分享72个NodeJs项目源码总有一个是你想要的
204 0
|
6月前
|
数据采集 JavaScript 前端开发
分享66个NodeJs项目源码总有一个是你想要的
分享66个NodeJs项目源码总有一个是你想要的
286 0
|
6月前
|
JavaScript 前端开发 索引
某东大厂面试js手写题【手写代码附带注释,放心食用,博主亲测】
某东大厂面试js手写题【手写代码附带注释,放心食用,博主亲测】
58 0
|
12月前
|
前端开发 JavaScript API
wordpress插件开发踩坑记
想要使用 REST API 需要自己额外安装插件:WordPress REST API,现在 WordPress 5.0以上的版本已经默认支持 REST API了,不需要额外去安装插件
115 0