Лучший способ получить массив данных из ввода в Laravel - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть HTML-код, как показано ниже.Каждый раз, когда нажатие кнопки плюс создает новую строку, class = "repeat", включая все ее внутренние элементы.Таким образом, в основном каждая строка будет иметь ввод a, b, c, d, e и f.

<div class="row no-gutters mb-3 repeat">
    <div class="col-md-11">
         <input name="a[]" placeholder="a" class="mr-1" type="text">
         <input name="b[]" placeholder="b" class="mr-1" type="text">
         <input name="c[]" placeholder="c" class="mr-1" type="text">
         <input name="d[]" placeholder="d" class="mr-1" type="text">
         <input name="e[]" placeholder="e" class="mr-1" type="text">
         <input name="f[]" placeholder="f" type="text">
    </div>

    <div class="col-md-1 text-center">    
        <button class="btn btn-outline-success btn-sm add-more" type="button"><i class="fa fa-plus"></i></button>    
    </div>
</div>

Мой код в PHP выглядит следующим образом (с использованием фреймворка Laravel):

foreach($request->a as $a){
    foreach($request->b as $b){    
        foreach($request->c as $c){        
            foreach($request->d as $d){            
                foreach($request->e as $e){                
                    foreach($request->f as $f){                    
                        $data = [                        
                            'a' => $a, 'b' => $b, 'c' => $c, 'd' => $d, 'e' => $e, 'f' => $f                        
                        ];
                        Abc::create([$data]);                   
                    }                
                }            
            }        
        }    
    }
}

Все, что мне нужно, это предложение улучшить код PHP выше.Заранее спасибо.:)

1 Ответ

1 голос
/ 26 сентября 2019

На самом деле подход foreach был неверным.Мы можем добавить еще один элемент ввода в качестве скрытого элемента, как показано ниже, для использования в качестве ссылки:

<input name="id[]" type="hidden">

Чем в PHP мы можем сделать так:

for($s = 0; $s < count($request->id); $s++){
    Abc::create([
        'a' => $request->a[$s],
        'b' => $request->b[$s],
        'c' => $request->c[$s],
        'd' => $request->d[$s],
        'e' => $request->e[$s],
        'f' => $request->f[$s]
    ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...