मेरे रूप में उपयोगकर्ता लाइसेंस आइटम जोड़ (या हटा सकता है) जो इनपुट नेस्टेड सरणियों के रूप में उत्पन्न होते हैं:

<div>
    <select name="licences[0][type]">
        <option value="">- Select -</option>
        <option value="car">Car</option>
        <option value="motorbike">Motorbike</option>
    </select>

    <input type="text" name="licences[0][car_spec]"  value="">
    <input type="text" name="licences[0][motorbike_spec]"  value="">
</div>

<div>
    <select name="licences[1][type]">
        <option value="">- Select -</option>
        <option value="car">Car</option>
        <option value="motorbike">Motorbike</option>
    </select>

    <input type="text" name="licences[1][car_spec]"  value="">
    <input type="text" name="licences[1][motorbike_spec]"  value="">
</div>

...

और यहाँ मेरे नियम हैं:

$rules = [
    'licences.*.type' => 'required',
    'licences.*.car_spec' => 'required_if:licences.*.type|car',
    'licences.*.motorbike_spec' => 'required_if:licences.*.type|motorbike',
];

अब मैं कैसे सुनिश्चित कर सकता हूं कि सत्यापन लाइसेंस सरणी के समान अनुक्रमणिका (*) से मेल खाते हैं?
उदाहरण के लिए, licences[1][car_spec] इनपुट को licences[1][type] इनपुट के खिलाफ चेक किया जाता है, न कि licences[0][type] के खिलाफ।

0
Duddy67 9 फरवरी 2021, 09:56

1 उत्तर

सबसे बढ़िया उत्तर

इस तरह प्रयास करें:

public function validation(){
    $rules = [
        'licences.*.type' => 'required',
        'licences.*.car_spec' => 'required_if:licences.*.type|car',
        'licences.*.motorbike_spec' => 'required_if:licences.*.type|motorbike',
    ];
     foreach($this->request->get('licences') as $key => $value){
         $rules['licences.'.$key.'.type'] = 'required';
         $rules['licences.'.$key.'.car_spec'] = 'required_if:licences.*.type|car';
         $rules['licences.'.$key.'.motorbike_spec'] = 'required_if:licences.*.type|motorbike';
     }
    return $rules;
}

मुझे उम्मीद है कि यह आपके लिए काम करेगा।

1
Zia Yamin 9 फरवरी 2021, 10:28