laravel日常使用總結

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都可以。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章