laravel日常使用总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaopingga/article/details/79497487

laravel日常使用总结

一、redis 运行服务时报错:

Creating Server TCP listening socket *:6379: bind: No such file or directory

解决方法,依次输入以下命令

1. redis-cli.exe

2. Shutdown

3. Exit

4. redis-server.exe

二、路由routes.php的设置

Routes.php是可以更改的,设置的位置是App->Providers->RputeServiceProvider.php

 

三、中间件可以自定义

App->Http->Kernel.php中,是设置的中间件,这个是可以自定义的,

Middleware中添加中间件Cors.php,在Kernel.php中可以增加 

  



Mui是我自定义的一个中间件组名字;运行Kernel类的handle方法,主要动作是运行middleware和启动URL相关的Contrller

 

在手机端访问的时候,就会加载mui的中间件组;

 

四、去掉POST提交验证

 

 

VerifyCsrfToken中,可以设置不需要验证(即{!! csrf_field() !!})的路由名,

 

这样所有mui/*的路由,对post提交都没有验证,也可以在Kernel.php中间件组中去掉\App\Http\Middleware\VerifyCsrfToken::class,

、新增和修改可以用一个页面

 

判断下对象是否存在就可以,

 

这里面{{ method_field('PATCH') }}  {{ csrf_field() }} 是用于PATCH提交的,浏览器不识别PATCH PUT DELETE这些提交方式,只识别GET POST

六、Datatables的使用

Laravel可以使用datatables,以下是我使用datatables的流程及问题;

1.安装
cmd中打出

composer require yajra/laravel-datatables-oracle:~5.0

即可使用composer安装datatables

config/app.php中添加:

yajra\Datatables\DatatablesServiceProvider::class,

'Datatables' => yajra\Datatables\Datatables::class,

生成配置文件: 

php artisan vendor:publish

这样子就安装完了

详情参考:

http://blog.csdn.net/hooloo/article/details/50415949

2.使用
1、引入:

在所需的controller中引入use Datatables;

app.blade.php界面中引入jquery.dataTables.jsjquery.dataTables.css

 

引入在href="{{ URL::asset('地址') }}"

地址是放在public文件夹下的文件

 

2、Controller端

Controller端放置一个跳转页面:

 

一个datatables查询页面:

 

laravel自己查询一样,只不过不需要在结尾添加->get()->frist()等方法;

直接Datatables::of($result)->make(true);即可;

Datatables还有一些相关方法,可以参考:https://packagist.org/packages/yajra/laravel-datatables-oracle

 

3、前端页面

其他字段都差不多

 

3.自定义

由于数据库中保存的是加密后的数据,所以用户管理中,展现的数据必须是解密后的,这就需要我修改datatables源码来满足我的需求,

 

decryptMake这个是我自定义的源码方法名,好吧,说实话,我都忘了我是咋弄的了,勉强找到这个方法,等我清醒的时候再回忆回忆。

 

这两个方法是我自定义的,应该是仿照make方法写的。

 

主要的目的是对相关字段进行解密,我也没写什么高深的方法,只是在vendor\yajra\laravel-datatables-oracle\src\yajra\Datatables\Engines\QueryBuilderEngine.php页面中添加两个方法decryptMakedecryptRender,实现我功能的是decryptRender方法,主要是在下面添了一段话

 

 

我忘了object是干嘛的了,但好像没那么重要。

eyJpdiI6Ik56bEdSRUZLTVRWSVZXUm9aamc1Wmc9PSIsInZhb这段字符串是所有加密的密文里都有的,所以我拿它作为是否为密文的判断依据,其他就没啥了。

4.错误

项目上线后,发现运维管理模块的datatables不好使,报出Failed to load resource: the server responded with a status of 404 (Not Found)错误

 

上网查了一下,是因为url有问题,

 

但在本地测试是好使的,同样的urlip地址和端口改为本地的,都好使,而且用户管理也是使用的datatables也是好使的,所以,我推测是url字符过长导致的错误,后来验证了下,的确是这样,服务器对get请求的字符有长度限制,我把url改成post请求,就好使了。

以下是浏览器对get请求的限制,作为扩展知识,本次报错是服务器对get请求的限制,不是浏览器:

http://blog.csdn.net/M_ChangGong/article/details/5764711

 

、文件的上传与下载

有帮助的文档:

http://laravelacademy.org/post/2333.html?utm_source=tuicool&utm_medium=referral

http://www.jianshu.com/p/76ba6a417561

http://blog.csdn.net/zhangfei8625/article/details/43057163

1. 前端

前端很简单,只要是在form表单中添加enctype="multipart/form-data"这句话,就可以实现文件的上传,同时type定义为file就可以了

 

2. 后端

如果是保存到其他空间,可以在config-filesystems.php中设置

 

这里面public_path代表着public目录下,该目录的文件,可以无需注册,可直接访问,这样不怎么安全,一些重要的数据最好是放在其他位置,可以放在storage目录下

 

后台相关代码:

 

若是手机端传图片,后台存储的话:

$_FILES判断是否有图片传入

详细代码:

 

若上传失败,显示未获取到文件,有可能是上传的文件超出了php接收上限,修改php.ini文件中的post_max_size 和upload_max_filesize字段就行了

相关文档:http://www.365mini.com/page/php-upload-file-exceed-limit.htm

 

八、EXCEL导入到mysql

1、安装

使用Composer安装依赖

首先在Laravel项目根目录下使用Composer安装依赖:

composer require maatwebsite/excel ~2.0.0
安装后的设置

config/app.php中注册服务提供者到providers数组:
Maatwebsite\Excel\ExcelServiceProvider::class,

同样在config/app.php中注册门面到aliases数组:

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

如果想要对Laravel Excel进行更多的自定义配置,执行如下Artisan命令:

php artisan vendor:publish

执行成功后会在config目录下生成一个配置文件excel.php

2、导入

 

 

3、捕获异常

 

相关文档:

http://blog.csdn.net/small_whale/article/details/51917211

http://bbs.csdn.net/topics/390011157

引入ffmpeg进行音频转换

参考:https://www.cnblogs.com/love-snow/articles/7246475.html

我没有用上下载的zip包,而是直接到项目根目录下输入

composer require php-ffmpeg/php-ffmpeg

好像也引进去了

 

在vendor目录下:

 

我看看咋用^_^

参考:

https://www.cnblogs.com/peteremperor/p/6477743.html(推荐)

http://blog.csdn.net/qq_38568388/article/details/78820809(参考)

https://laravel-china.org/topics/327/using-ffmpeg-to-deal-with-multimedia-files-under-laravel

直接create()的时候一直都提示:

local.ERROR: exception 'Alchemy\BinaryDriver\Exception\ExecutableNotFoundException' with message 'Executable not found, proposed : avprobe, ffprobe' in D:\xxxx\vendor\alchemy\binary-driver\src\Alchemy\BinaryDriver\AbstractBinary.php:160

估计是因为没有找到对的地址: https://github.com/PHP-FFMpeg/PHP-FFMpeg

根据这个,有下载了

 

这个,放入到php_ffmepg中,然后将对应的ffmpeg.exe和ffprobe.exe目录放入到create中

 

又一个问题:

local.ERROR: exception 'Alchemy\BinaryDriver\Exception\ExecutionFailureException' with message 'ffmpeg failed to execute command "D:\xxxx\vendor\php-ffmpeg\php-ffmpeg\bin\ffmpeg.exe" "-y" "-i" "D:\iEBP4JLSI-PHP\public/uploads/ceshi/Audio.mp3" "-threads" "12" "-acodec" "libfaac" "-b:a" "128k" "D:\iEBP4JLSI-PHP\public/uploads/video/video.pcm"' in D:\xxxx\vendor\alchemy\binary-driver\src\Alchemy\BinaryDriver\ProcessRunner.php:100

代表你选择的格式$format = new FFMpeg\Format\Audio\Vorbis();与要转换的格式不符

是音频格式有问题,对方写的格式是视频,改成音频就可以了,代码如下:

 

而后与百度语音识别进行交互,自定义类库引入问题可以参考:http://blog.csdn.net/darry_zhao/article/details/52689635

与百度语音识别交互时,如果语音差别非常大,就说明你上传的音频不符合对方的要求:

 

设置ffmpeg转换格式时,setAudioChannels为音频声道设置设为1即可,setAudioKiloBitrate为音频码率设置,设为8或16都可以。

猜你喜欢

转载自blog.csdn.net/xiaopingga/article/details/79497487