一个使用laravel创建word的实例
这是一个从零开始使用laravel例子.一个很简单的功能,在页面上上传指标值(json格式),然后点按纽会把指标按一定格式输出word.其中使用了laravel的一些基本的功能。
1)首先创建项目CreateWord
命令行输入:laravel new CreateWord
这时会自动创建一个目录CreateWord,在这个目录下已经生成了很多的文件,只需求修改相应的文件,就可以实现我们要的功能.
2)在\app\Http\Controllers创建一个控制器类
类名要用驼峰命名法PostsController,定义一个方法upload
控制器类都会继承Controller类,所以需要extendsController
3)在\routes\web.php中增加路由
Route::post('createDocs/upload', ' aaa@qq.com');
http访问的method=post
请求时,对应Route::post()
方法, 这里PostsController
是一个控制器类(上面定义的),upload是该控制器类的方法,整条语句的意思就是当访问/
的时候,就会去执行PostsController类中的upload方法。”””
4)增加视图
操作页面很简单,如下图
在\resources\views\createDocs增加视图createDoc.blade.php(laravel的视图页面是使用blade
模版引擎的,所以必须加上.blade.php的后缀)
在上传数据之后,需要返回当前页面,所以update方法最后要返回“return view('createDocs.createDoc');”
5)上传文件
首先把json文件保存在本地目录,再解析出内容,最后根据内容来输出word
文件系统的配置文件在 config/filesystems.php 文件中,此处我们新建一个uploads本地磁盘空间用于存储上传的文件
之后编写上传的代码
6)生成word
直接输出word的内容到浏览器
ob_start(); //打开缓冲区
echo $html;
header("Cache-Control:public");
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
header('Content-Disposition:attachment; filename=test.doc');
header("Pragma:no-cache");
header("Expires:0");
ob_end_flush();//输出全部内容到浏览器
如果文件是中文名需要处理一下
7)解析的内容,会先保存在MySql数据库中
首先要创建数据库。Laravel自带的migration
,
migration
可以看成是数据库的版本控制,你无论是添加了表,还是修改了字段,你的同事只需要执行php artisan migrate
就可以保证他的数据库和你一样了,这对于数据库的线上部署也非常的方便。
在database/migrations
目录创建表,一般每个表一个文件,主要实现up和down方法。up()
中的内容是创建表及其字段,而down()
函数是删除表
然后命令行执行:php artisan migrate 在数据库创建了表ghub.sans.item.data
还可以使用php artisan db:seed 给数据表插入测试数据
8)查询和保存数据
这里用到了Laravel 的 Eloquent ORM。可以通过 make
:model
命令自动生成Eloquent 模型:
php artisan make
:model ItemDatas
然后进行改写
有了这个就很方便的操作数据表的数据了。比如从ghub_sans_items取出数据保存在ghub.sans.item.data这个表中