後端程式碼加入條件判斷:
加入套件: use Illuminate\Support\Facades\Validator;
從store程式碼修改
原來:
public function store(Request $request)
{
$form = $request->all();
DB::table('cart_items')->insert(['cart_id' => $form['cart_id'],
'product_id' => $form['product_id'],
'quantity' => $form['quantity'],
'created_at' => now(),
'updated_at' => now()]);
//return response(true);
return response()->json(true);
}
修改後:欄位必填
public function store(Request $request)
{
//$form = $request->all();
$validator = Validator::make($request->all(),[
'cart_id'=>'required',
'product_id'=>'required',
'quantity'=>'required'
]);
if($validator->fails()){
return response($validator->errors(),400);
}
DB::table('cart_items')->insert(['cart_id' => $form['cart_id'],
'product_id' => $form['product_id'],
'quantity' => $form['quantity'],
'created_at' => now(),
'updated_at' => now()]);
//return response(true);
return response()->json(true);
}
API的命名 - 比 _ 正確
Route::resource('cart-items', 'CartItemController');
記得terminal要重新啟動php artisan serve
POSTMAN測試一個不填會報錯
POSTMAN測試3個不填會報錯
指定填入只能數字
程式碼:
public function store(Request $request)
{
//$form = $request->all();
$validator = Validator::make($request->all(),[
'cart_id'=>'required|integer',
'product_id'=>'required|integer',
'quantity'=>'required|integer'
]);
if($validator->fails()){
return response($validator->errors(),400);
}
DB::table('cart_items')->insert(['cart_id' => $form['cart_id'],
'product_id' => $form['product_id'],
'quantity' => $form['quantity'],
'created_at' => now(),
'updated_at' => now()]);
//return response(true);
return response()->json(true);
}
````
--------
POSTMAN測試

-------
指定填入範圍'quantity'=>'required|integer|between:1,10'

程式碼
public function store(Request $request)
{
//$form = $request->all();
$validator = Validator::make($request->all(),[
'cart_id'=>'required|integer',
'product_id'=>'required|integer',
'quantity'=>'required|integer|between:1,10'
]);
if($validator->fails()){
return response($validator->errors(),400);
}
DB::table('cart_items')->insert(['cart_id' => $form['cart_id'],
'product_id' => $form['product_id'],
'quantity' => $form['quantity'],
'created_at' => now(),
'updated_at' => now()]);
//return response(true);
return response()->json(true);
}
````
POSTMAN測試
報錯訊息變中文
程式碼
public function store(Request $request)
{
$messages =[
'required' => ':attribute 是必要的'
];
//$form = $request->all();
$validator = Validator::make($request->all(),[
'cart_id'=>'required|integer',
'product_id'=>'required|integer',
'quantity'=>'required|integer|between:1,10'
],$messages);
if($validator->fails()){
return response($validator->errors(),400);
}
DB::table('cart_items')->insert(['cart_id' => $form['cart_id'],
'product_id' => $form['product_id'],
'quantity' => $form['quantity'],
'created_at' => now(),
'updated_at' => now()]);
//return response(true);
return response()->json(true);
}
````
POSTMAN測試

不在範圍內顯示變中文

---------------
全部驗證成功顯示true

程式碼
public function store(Request $request)
{
$messages =[
'required' => ':attribute 是必要的'
];
//$form = $request->all();
$validator = Validator::make($request->all(),[
'cart_id'=>'required|integer',
'product_id'=>'required|integer',
'quantity'=>'required|integer|between:1,10'
],$messages);
if($validator->fails()){
return response($validator->errors(),400);
}
$validateData = $validator->validate();
//DB::table('cart_items')->insert(['cart_id' => $form['cart_id'],
DB::table('cart_items')->insert(['cart_id' => $validateData['cart_id'],
//'product_id' => $form['product_id'],
'product_id' => $validateData['product_id'],
//'quantity' => $form['quantity'],
'quantity' => $validateData['quantity'],
'created_at' => now(),
'updated_at' => now()]);
//return response(true);
return response()->json(true);
}
````
新增檔案來做數量驗證:
帶入 繼承概念
在terminal
用指令加入資料夾裡面含有php artisan make:request UpdateCartItem
產生的UpdateCartItem
裡面的程式碼:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateCartItem extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
把return false;改成return true;
修改public function rules()內容
程式碼
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
//class UpdateCartItem extends FormRequest
class UpdateCartItem extends APIRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
//return false;
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'quantity'=>'required|integer|between:1,10'
];
}
public function messages()
{
return [
'quantity.between'=>'數量必須小於10'
];
}
}
再新增一個檔案
填入內容
加入套件,改裡面的程式碼
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
class APIRequest extends FormRequest
{
protected function failedValidation(Validator $validator)
{
throw new HttpResponseException(response(['errors'=>$validator->errors()],400));
}
}
再修改UpdateCartItem裡面去繼承他
程式碼:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
//class UpdateCartItem extends FormRequest
class UpdateCartItem extends APIRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
//return false;
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'quantity'=>'required|integer|between:1,10'
];
}
public function messages()
{
return [
'quantity.between'=>'數量必須小於10'
];
}
}
改CartItemController 裡面的update程式碼
public function update(UpdateCartItem $request, $id)
{
//$form = $request->all();
$form = $request->validate();
DB::table('cart_items')->where('id',$id)
->update([
'quantity' => $form['quantity'],
'updated_at' => now()]);
//return response(true);
return response()->json(true);
}
引用套件UpdateCartItem
加入use App\Http\Requests\UpdateCartItem;
啟動serve的指令: php artisan serve
可以更新的程式碼
public function update(UpdateCartItem $request, $id)
{
$form = $request->validated();
DB::table('cart_items')->where('id',$id)
->update([
'quantity' => $form['quantity'],
'updated_at' => now()]);
return response()->json(true);
}
用POSTMAN測試有顯示中文報錯
符合範圍時顯示true
大家明天見~ 有些圖跟程式碼 ~無法顯示得很美~大家應該可以區分吧~?