动态表单保存到DB

时间:2017-03-20 00:40:26

标签: javascript php laravel laravel-5.2

大家好,希望你能帮助我并提出一些建议,因为我现在不知道该怎么做。请帮助。

我是动态形式,我可以添加(追加)新行,但当我试图保存它的值时,它表示未定义的偏移量。请查看我的代码

这是我的观点

<tbody>
              <tr>
                <td>1</td>
                <td><textarea class="form-control" rows="3" name="analisa[0]" placeholder="Analisa Penyebab" style="resize: none;
                height: 50px"></textarea></td>
                <td><textarea class="form-control" rows="3" name="tindakan[0]" placeholder="Tindakan Perbaikan dan Pencegahan" 
                style="resize: none; height: 50px"></textarea></td>
                <td><input class="form-control" type="text" name="pic[0]" placeholder="PIC"></td>
                <td><input class="form-control" type="date" name="tanggal_pelaksanaan[0]"</td>
              </tr>
            </tbody>
          </table>

          <a class="button" href="#" role="button" id="add">&nbspTambah Analisa</a>

这是我的Javascript

$(document).ready(function(){
    var i = 1;

    $('#add').click(function(){
        i++;
        $('#tbanalisa tbody').append("<tr>"+"<td>"+i+"</td>"+"<td><textarea class=\"form-control\" rows=\"3\" name=\"analisa"+i+"\" placeholder=\"Analisa Penyebab\" style=\"resize: none; height: 50px\"></textarea></td>"+"<td><textarea class=\"form-control\" rows=\"3\" name=\"tindakan"+i+"\" placeholder=\"Tindakan Perbaikan dan Pencegahan\"style=\"resize: none; height: 50px\"></textarea></td>"+"<td><input class=\"form-control\" type=\"text\" name=\"pic"+i+"\" placeholder=\"PIC\"></td>"+"<td><input class=\"form-control\" type=\"date\" name=\"tanggal_pelaksanaan"+i+"\" id=\"date"+i+"\" ></td>"+"</tr>");

    document.getElementById('count').value = i;  
    });

});

这是我在Controller中的功能

for($i=0; $i<2; $i++){
        $data[] = array(
            'id_tindakan'=>$tindakan->id,
            'analisa'=>$request->analisa[$i],
            'tindakan'=>$request->tindakan[$i],
            'pic'=>$request->pic[$i],
            'tanggal_pelaksanaan'=>$request->tanggal_pelaksanaan[$i]
        );
    }
    DB::table('analisas')->insert($data);

我试图在javascript中更改每个数组的索引 不是analisa [i]但我尝试analsia [1],它工作正常。为什么我的代码出错?

1 个答案:

答案 0 :(得分:0)

undefined offset表示该索引中没有任何内容,或者只是您的对象不是数组。对于您的情况,我认为您的变量不是数组。在您的Javascript中,您可以

name=\"analisa"+i+"\"

这意味着实际名称在html中呈现为

name="analisa2"

而在Laravel中你希望得到analisa[2],而不是数组。

作为解决方案,您可以更改Javascript以将其命名为数组

name=\"analisa["+i+"]\"

或者更改您的控制器以选择从Javascript发送的完全相同的名称

'analisa'=>$request->analisa.$i,
相关问题