2017-02-15 10 views
10

मैं Laravel में सरणी पोस्ट को मान्य करने का प्रयास करें:लार्वेल में सरणी को कैसे सत्यापित करें?

$validator = Validator::make($request->all(), [ 
      "name.*" => 'required|distinct|min:3', 
      "amount.*" => 'required|integer|min:1', 
      "description.*" => "required|string" 

     ]); 

मैं खाली पोस्ट भेजने के लिए और इस if ($validator->fails()) {}False के रूप में मिलता है। इसका मतलब है कि सत्यापन सत्य है, लेकिन यह नहीं है।

लैरवेल में सरणी को कैसे सत्यापित करें? जब मैं input name="name[]"

उत्तर

30

तारांकन प्रतीक (*) का अर्थ है कि आप सरणी में VALUES को देखना चाहते हैं, वास्तविक सरणी नहीं।

$validator = Validator::make($request->all(), [ 
      "name" => 'required|array|min:3', 
      "name.*" => 'required|string|distinct|min:3', 
     ]); 

ऊपर के उदाहरण में:

  • नाम 3 तत्वों की कम से कम एक सरणी होना चाहिए।
  • "नाम" सरणी में मान अलग-अलग (अद्वितीय) तार होना चाहिए, कम से कम 3 वर्ण लंबा होना चाहिए।
1

आप इनपुट सरणी पर पाश करने के लिए है और यहां बताए अनुसार प्रत्येक इनपुट के लिए नियमों को जोड़ें: Loop Over Rules

यहाँ फिर के लिए एक कुछ कोड है: मैं के रूप में इस सरणी है

$input = Request::all(); 
$rules = []; 

foreach($input['name'] as $key => $val) 
{ 
    $rules['name.'.$key] = 'required|distinct|min:3'; 
} 

$rules['amount'] = 'required|integer|min:1'; 
$rules['description'] = 'required|string'; 

$validator = Validator::make($input, $rules); 

//Now check validation: 
if ($validator->fails()) 
{ 
    /* do something */ 
} 
+2

ऐसा करने की कोई आवश्यकता नहीं है - https://laravel.com/docs/5.4/validation#validating-arrays – Laran

+0

आह, मैं देखता हूं। धन्यवाद महोदय। –

0

मेरी एक HTML + Vue.js डेटा ग्रिड/मेज से अनुरोध डेटा:

[0] => Array 
    (
     [item_id] => 1 
     [item_no] => 3123 
     [size] => 3e 
    ) 
[1] => Array 
    (
     [item_id] => 2 
     [item_no] => 7688 
     [size] => 5b 
    ) 

और इस का उपयोग जो मान्य करने के लिए ठीक से काम करता है:

$this->validate($request, [ '*.item_id' => 'required|integer', '*.item_no' => 'required|integer', '*.size' => 'required|max:191', ]); 
संबंधित मुद्दे