Laravel 實用的輔助函數小技巧--helper
Laravel 的一些輔助函數其實有很多方法是很實用的,很多人也用了一部分,而往往很多人確把其他的小方法忽視了,下面,丟丟哥給大家一一列舉以下。
一、表單類
1.csrf token 表單
{{ csrf_token() }}
這樣就可以直接獲取 Laravel 自身維護的 csrf_token,比如通常是這樣用的
<input name="_token" value="{{ csrf_token() }}" type="hidden" />
更簡便的方法
{!! csrf_field() !!}
這樣就會直接在 html 輸出類似下面的內容了
<input name="_token" value="5A0CQ8OHQylQFdM1UQ8pjJyMuN8YP5erC6VaiS89" type="hidden" />
2.生成 method 表單
在使用 resource 路由的時候,有一些 method 瀏覽器原生不能支持的,比如 DELETE,PATCH PUT 等,這時候就可以使用一下代碼來生成 method 表單,模擬這些請求:
{{ method_field('DELETE') }}
生成的 html :
<input type="hidden" name="_method" value="DELETE">
二、數組類型
如果指定的鍵不存在於該數組,array_add
函數便會將指定的鍵值對加到數組中:
$array = array_add(['name' => 'Desk'], 'price', 100); // ['name' => 'Desk', 'price' => 100]
array_collapse
函數將數組的每一個數組折成單個數組:
$array = array_collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
array_divide
函數返回兩個數組,一個包含原本數組的鍵,另一個包含原本數組的值:
list($keys, $values) = array_divide(['name' => 'Desk']); // $keys: ['name'] // $values: ['Desk']
head
函數返回指定數組的第一個元素:
$array = [100, 200, 300]; $first = head($array); // 100
last
函數返回指定數組的最后一個元素:
$array = [100, 200, 300]; $last = last($array); // 300
字符串類型
e
函數對指定字符串運行 htmlentities
(防注入處理):
echo e('<html>foo</html>'); // <html>foo</html>
str_limit
函數限制字符串的字符數量。該函數接受一個字符串作為第一個參數,以及最大字符數量作為第二參數(支持中文截取 不會出現亂碼的情況):
$value = str_limit('The PHP framework for web artisans.', 7);
// The PHP...
str_contains 函數判斷指定字符串是否包含指定內容:(可以做一個異步的字符串過濾器):
$value = str_contains('This is my name', 'my'); // true
str_random
函數生成指定長度的隨機字符串(實用場景也挺多):
$string = str_random(64);
trans
函數根據你的 本地化文件 翻譯指定的語句(多語言和表單驗證):
echo trans('validation.required'):
三、其他
back()
函數生成一個重定向響應讓用戶回到之前的位置:
return back()->withErrors('this value is request');
config
獲取設置選項的設置值。設置值可通過「點」式語法讀取,其中包含要訪問的文件名以及選項名稱。可傳遞一默認值在找不到指定的設置選項時返回該數值:
$value = config('app.timezone'); $value = config('app.timezone', $default);
config
輔助函數也可以在運行期間,根據指定的鍵值對指定設置值:
config(['app.debug' => true]);
dd
函數輸出指定變量並結束腳本運行(這樣相信用的多得一筆了):
dd($data);
env
函數獲取環境變量值或返回默認值:
$env = env('APP_ENV'); // 當變量不存在時返回一個默認值... $env = env('APP_ENV', 'production');
redirect
函數返回重定向器實例以進行 重定向:
return redirect('/login');
response
函數創建一個 響應 實例或獲取一個響應工廠(response factory)
實例:
return response('Hello World', 200, $headers); return response()->json(['foo' => 'bar'], 200, $headers);
session
函數可用於獲取或設置單個 session
內容:
$value = session('key');
你可以通過傳遞鍵值對給該函數進行內容設置:
session(['chairs' => 7, 'instruments' => 3]);
該函數在沒有傳遞參數時,將返回 session
實例:
$value = session()->get('key'); session()->put('key', $value);
view
函數獲取 視圖 實例:
return view('auth.login');
對象轉數組
collect($obj)->toArray();
轉換成json字串
// $data 數組和對象都可以 collect($data)->toJson();
`
回調過濾集合,只有通過給定測試的數據項才會保留下來
$arr = collect([1,2,3,4])->filter(function ($str){ return $str > 2; }); dd($arr); // [3,4]
將集合數據項的順序顛倒
$collection = collect([1, 2, 3, 4, 5]); $reversed = $collection->reverse(); $reversed->all(); // [5, 4, 3, 2, 1]
個數
$data = collect([1,2,3,4,5])->count(); // 5
迭代集合並對集合中每個數據項調用給定回調。集合中的數據項將會被替代成從回調中返回的值:
$collection = collect([1, 2, 3, 4, 5]); $collection->transform(function ($item, $key) { return $item * 2; }); $collection->all(); // [2, 4, 6, 8, 10]
集合的值相應的索引處合並給定數組的值
$collection = collect(['Tom', 'Lark']); $zipped = $collection->zip(['170cm', '181cm']); $zipped->all(); // [['Tom', '170cm'], ['Lark', '181cm']]