亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 是否有一個驗證規則來檢查字段是否為標量

Laravel 是否有一個驗證規則來檢查字段是否為標量

PHP
夢里花落0921 2023-09-22 16:39:01
我正在使用 Laravel 的驗證器來驗證控制器內的 JSON 請求:class InsertProduct extends ModuleApiController{    public function handle(Request $request, int $fileId)    {        $data = $request->json()->all();        $validator = Validator::make($data, [            'products' => ['required', new ArrayWithType('seq', 'The :field field must be an array')],            'products.*' => ['required', new ArrayWithType('assoc', 'The :field field must be an object')],            'products.*.code' => 'required|alpha_num',            'products.*.variants' => ['required', new ArrayWithType('seq', 'The :field field must be an array')],            'products.*.variants.*' => ['required', new ArrayWithType('assoc', 'The :field field must be an object')],            'products.*.variants.*.barcode' => 'required|alpha_num',        ]);字段products.*.code和products.*.variants.*.barcode字段可以是這樣的:20032199231"AB3123-X""Z22.327p""001230572""Houston22"我似乎找不到接受所有這些潛在值但拒絕數組或對象(Laravel 解析 JSON 后的關聯數組)值的規則。我嘗試過的事情: Rule                 | Issue----------------------|--------------------------------------------------------------------'required'            | Will validate JSON objects and arrays 'required|string'     | Won't validate integer values like the first one above'required|alpha_num'  | Won't validate the middle three values above'required|alpha_dash' | Won't validate values that contain periods (.) like the third one我需要的是類似的東西:'required|not_array'或者'required|scalar'但我在文檔中找不到類似的東西。我真的需要為此編寫自定義驗證規則嗎?
查看完整描述

2 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

你嘗試過做這樣的事情嗎?使用is_scalar

$validator = Validator::make($request->all(), [

? ? 'products.*.code' => [

? ? ? ? 'required',

? ? ? ? function ($attribute, $value, $fail) {

? ? ? ? ? ? if (!is_scalar($value)) {

? ? ? ? ? ? ? ? $fail($attribute.' isnt a scalar.');

? ? ? ? ? ? }

? ? ? ? },

? ? ],

]);

或者,如果您想注冊自定義驗證:


public function boot()

{

? ? ?Validator::extend('is_scalar', function ($attribute, $value, $parameters, $validator) {

? ? ? ? ?return !is_scalar($value);

? ? ?});

?}

進而:


$validator = Validator::make($request->all(), [

? ? 'products.*.code' => [

? ? ? ? 'required',

? ? ? ? 'is_scalar'

? ? ],

]);


查看完整回答
反對 回復 2023-09-22
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

沒有這樣的內置驗證規則。您需要創建自定義驗證規則。使用regex規則來實現它。



查看完整回答
反對 回復 2023-09-22
  • 2 回答
  • 0 關注
  • 115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號