Laravel之哈希/經常使用函數/分頁

一.哈希

1.簡介
Laravel Hash 門面爲存儲用戶密碼提供了安全的Bcrypt 哈希算法。若是你正在使用Laravel 應用自帶的Au
thController 控制器,將會自動爲註冊和認證使用該Bcrypt 。
Bcrypt 是散列密碼的絕佳選擇,由於其」工做因子「是可調整的,這意味着隨着硬件功能的提高,生成哈希所
花費的時間也會增長。php

2.基本使用
$user = User::findOrFail($id);
// 驗證新密碼長度...
$user->fill([
  'password' => Hash::make($request->newPassword)
])->save();前端

此外,還可使用全局的幫助函數bcrypt:
bcrypt('plain-text')算法

3.驗證哈希密碼
check 方法容許你驗證給定原生字符串和給定哈希是否相等,然而,若是你在使用Laravel 自帶的AuthController (詳見用戶認證一節),就不須要再直接使用該方法,由於自帶的認證控制器自動調用了該方法:數據庫

if (Hash::check('plain-text', $hashedPassword)) {
  // 密碼匹配...
}json

 

二.路徑函數

1.app_path()
app_path 函數返回app 目錄的絕對路徑

$path = app_path();
你還可使用app_path 函數爲相對於app 目錄的給定文件生成絕對路徑:
$path = app_path('Http/Controllers/Controller.php');

2.base_path()
base_path 函數返回項目根目錄的絕對路徑:

$path = base_path();

你還可使用base_path 函數爲相對於應用目錄的給定文件生成絕對路徑:
$path = base_path('vendor/bin');

3.config_path()
config_path 函數返回應用配置目錄的絕對路徑

4.database_path()
database_path 函數返回應用數據庫目錄的絕對路徑

5.public_path()
public_path 函數返回public 目錄的絕對路徑

6.storage_path()
storage_path 函數返回storage 目錄的絕對路徑
$path = storage_path();

還可使用storage_path 函數生成相對於storage 目錄的給定文件的絕對路徑:
$path = storage_path('app/file.txt');

  

 

三.URL函數

1.action()
action 函數爲給定控制器動做生成URL ,你不須要傳遞完整的命名空間到該控制器,傳遞相對於命名空間App\Http\Controllers 的類名便可:

$url = action('HomeController@getIndex');
若是該方法接收路由參數,你能夠將其做爲第二個參數傳遞進來:
$url = action('UserController@profile', ['id' => 1]);

2.asset()
使用當前請求的scheme(HTTP 或 HTTPS) 爲前端資源生成一個 URL:
$url = asset('img/photo.jpg');

3.secure_asset()
使用HTTPS 爲前端資源生成一個 URL:
echo secure_asset('foo/bar.zip', $title, $attributes = []);

4.route()
route 函數爲給定命名路由生成一個URL :
$url = route('routeName');
若是該路由接收參數,你能夠將其做爲第二個參數傳遞進來:
$url = route('routeName', ['id' => 1]);

5.url()
url 函數爲給定路徑生成絕對路徑:
echo url('user/profile');
echo url('user/profile', [1]);

  

 

四.其餘重要函數

1.auth()
auth 函數返回一個認證器實例,爲方便起見你能夠用其取代Auth 門面:
$user = auth()->user();

2.back()
back 函數生成重定向響應到用戶前一個位置:
return back();

3.bcrypt()
bcrypt 函數使用Bcrypt 對給定值進行哈希,你能夠用其替代Hash 門面:
$password = bcrypt('my-secret-password');

4.config()
config 函數獲取配置變量的值,配置值能夠經過使用」.」號訪問,包含文件名以及你想要訪問的選項。若是配置選項不存在的話默認值將會被指定並返回:
$value = config('app.timezone');$value = config('app.timezone', $default);
幫助函數config 還能夠用於在運行時經過傳遞鍵值對數組設置配置變量值:
config(['app.debug' => true]);

5.csrf_field()
csrf_field 函數生成一個包含CSRF 令牌值的HTML 隱藏域,例如,使用Blade 語法:
{!! csrf_field() !!}

6.csrf_token()
csrf_token 函數獲取當前CSRF 令牌的值:
$token = csrf_token();

7.env()
env 函數獲取環境變量值或返回默認值:
$env = env('APP_ENV');
// Return a default value if the variable doesn't exist...
$env = env('APP_ENV', 'production');

8.dd 函數輸出給定變量值並終止腳本執行:
dd($value);

9.elixir()
elixir 函數獲取帶版本號的Elixir文件路徑:

10.event()
event 函數分發給定事件到對應監聽器:
event(new UserRegistered($user));

11.factory()
factory 函數爲給定類、名稱和數量建立模型工廠構建器,可用於測試或數據填充:
$user = factory('App\User')->make();

12.method_field()
method_field 函數生成包含HTTP 請求方法的HTML 隱藏域,例如:
<form method="POST">
{!! method_field('delete') !!}</form>

13.old()
old 函數獲取一次性存放在session 中的值:
$value = old('value');

14.redirect()
redirect 函數返回重定向器實例進行重定向:
return redirect('/home');

15.response()
response 函數建立一個響應實例或者獲取響應工廠實例:
return response('Hello World', 200, $headers);return response()->json(['foo' => 'bar'], 200, $headers)

16.value()
value 函數返回給定的值,然而,若是你傳遞一個閉包到該函數,該閉包將會被執行並返回執行結果:
$value = value(function() { return 'bar'; });

17.view()
view 函數獲取一個視圖實例:
return view('auth.login');

18.with()
with 函數返回給定的值,該函數在方法鏈中特別有用,別的地方就沒什麼用了:
$value = with(new Foo)->work();

  

 

五.分頁

默認狀況下,當前頁經過 HTTP 請求查詢字符串參數?page 的值判斷。固然,該值由 Laravel 自動檢測,而後自動插入分頁器生成的連接中;simplePaginate僅有上一頁和下一頁連接,paginate// 上一頁,下一頁和數字頁碼

1.使用DB門面
$users = DB::table('users')->simplePaginate(15); //僅有上一頁和下一頁連接
$users = DB::table('users')->paginate(15); // 上一頁,下一頁和數字頁碼

2.模型
$users = App\User::paginate(15);
$users = User::where('votes', '>', 100)->paginate(15);
$users = User::where('votes', '>', 100)->simplePaginate(15);

3.手動建立分頁器
使用LengthAwarePaginator
LengthAwarePaginator 接收參數和Paginator 幾乎同樣,只是,它要求傳入結果集的總數。
換句話說, Paginator 對應simplePaginate 方法,而LengthAwarePaginator 對應paginate 方法。
當手動建立分頁器實例的時候,應該手動對傳遞到分頁器的結果集進行「切片」,若是你不肯定怎麼作,查看 PHP 函數 array_slice。

4.在視圖中顯示分頁結果
<div class="container">
@foreach ($users as $user)
{{ $user->name }}
@endforeach
</div>
{!! $users->render() !!}

render 方法將會將結果集中的其它頁面連接渲染出來。每一個連接已經包含了?page 查詢字符串變量。記住, r
ender 方法生成的 HTML 兼容 Bootstrap CSS 框架。

5.自定義分頁參數
a.路由或控制器中
$users = App\User::paginate(15);
$users->setPath('custom/url');

b.模板中
{!! $users->appends(['sort' => 'votes'])->render() !!}
添加一個命名錨記
{!! $users->fragment('foo')->render() !!}

6.轉爲json
return App\User::paginate();
相關文章
相關標籤/搜索