Zi 字媒體
2017-07-25T20:27:27+00:00
Validation
PHP:7.2
Laravel:5.7
在實務上,所有傳進 Controller 的參數都應該是被限制的,這樣才不會造成資安或不可預期的錯誤。
除了傳統一個一個驗證之外,Laravel 也有提供許多關於 Validation 的用法。
Notice: 各型態規則的設定方式可以詳見官網。
Controller Validation
利用 Request 的 validate 方法進行驗證,如果失敗網頁會被導出。
範例
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function doc(Request $request)
{
// required 為必填
$validatedData = $request->validate([
'title' => 'required|max:255',
'body' => 'required',
]);
dd($validatedData);
}
}
Validator Class
如果需要更細致一點的操作,可以使用 Validator Class。
範例
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
class TestController extends Controller
{
public function doc(Request $request)
{
// 第一個參數是欄位與值(可以直接代入 $request->all())
// 第二個參數是 rules
$validator = Validator::make([
'name' => 'Johnson'
], [
'name' => 'required|min:5'
]
);
// 驗證失敗
if ($validator->fails()) {
return response()->json([
'message' => 'Parameters Error',
'errors' => $validator->errors()
], 400);
}
}
}
Form Request Validation
如果是大量使用的認證規則,可以選擇建立一個 Request Rule。
首先先透過 Artisan 建立一個 Request:
php artisan make:request DocValidation
再去修改 Request 相關設定和規則:
app/Http/Requests/DocValidation.php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class DocValidation extends FormRequest
{
public function authorize()
{
// 這裡可以做一些身份認證的事
// 不需身份認證可以直接 return true
return true;
}
public function rules()
{
return [
'name' => 'required|min:5'
];
}
}
Controller
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\DocValidation;
class TestController extends Controller
{
public function doc(DocValidation $request)
{
// 如果失敗也會被導出
$validatedData = $request->validated();
dd($validatedData);
}
}
Categories: Laravel
Tags: LaravelPHP
分類
Android
AngularJS
Chrome
Database
MySQL
DataStructure
Editor
Vim
Firefox
Git
Hadoop
Language
Go
Java
JavaScript
jQuery
jQueryChart
Node.js
Vue
PHP
Laravel
ZendFramework
Python
Mac
Network
Cisco
DLink
Juniper
Oauth
Server
Apache
Share
Unix
FreeBSD
Linux
WebDesign
Bootstrap
CSS
HTML
Wordpress
Search
搜尋:
寫了
5860316篇文章,獲得
23313次喜歡