Я ловлю ошибки через перехватчики и тост для пользовательского интерфейса. Обычно ошибка проходит перехватчик и отображается через тост для одноразовых входов, я пытаюсь уловить ошибки для неопределенного количества входов. До сих пор зацикливается через входной массив и правила настройки не работает. Component.vue

<template>
    <div>
        <div class="form-group" v-for="(input,k) in inputs" :key="k">
            <input type="text" id="name" placeholder="Name" v-model="input.name" />
            <span>
                <i class="fas fa-minus" @click="remove(k)" v-show="k || ( !k && inputs.length > 1)"></i>
                <i class="fas fa-plus" @click="add(k)" v-show="k == inputs.length-1"></i>
            </span>
        </div>
        <button @click="addName">Create</button>
    </div>
</template>

<script>
    export default {
    data() {
        return {
            inputs: [{name: ''}]
            }
        },
        methods: {
            add(index) {
                this.inputs.push({ name: ''});
                console.log( this.inputs);
            },
            remove(index) {
                this.inputs.splice(index, 1);
            },
            addName() {
                axios.post('/user', {userinputs:this.inputs}).then(response => {})
                    .catch(error => {
                        console.log(error);
                    });
            }
        }
    }
</script>

Controller:

public function store(Request $request)
{
    $rules = [
        'userinputs' => 'required|max:255',
    ];
    foreach ($request->input('userinputs') as $key => $my_object_in_array) {
        $rules[$my_object_in_array['name']] = 'required|max:10';
    }
    return $rules;
}
0
LDUBBS 23 Сен 2019 в 22:13

1 ответ

Лучший ответ

Надеюсь, это то, чего вы хотели достичь.

public function store(Request $request)
{

    $rules = [
        'userinputs.*.name' => 'required|max:255',
    ];

    $validator = \Illuminate\Support\Facades\Validator::make($request->all(), $rules);

    if ($validator->fails()) {
        //Return the errors as JSON
        return response()->json(['success' => 'false', 'errors' => $validator->errors()], 400);
    }

    //Do something

    return ['success' => 'true'];
}
0
Salim Djerbouh 23 Сен 2019 в 19:55