【问题标题】:Laravel empty array issueLaravel 空数组问题
【发布时间】:2020-11-24 08:01:26
【问题描述】:

我在提交表单数据并在另一个视图中显示时遇到问题,我得到了除数组数据类型 ($mat_res) 之外的所有数据,这是我的代码:

查看:

            var mat_codes = [];
            ...
            console.log(mat_codes);//displays an array with data
            $('#rest_form').on('submit', function(event) {
                //event.preventDefault();
                var form_data = $(this).serialize();                    
                var personnel = $('#personnel').val();
                var fonction = $('#fonction').val();
                var service = $('#service').val();
                var user_id = $('#user_id').val();
                var remarque = $('#remarque').val();
                $.ajax({
                    url: "{{ route('Restituter.createRest') }}",
                    method: "POST",
                    data: {
                        mat_codes: mat_codes,
                        personnel: personnel,
                        fonction: fonction,
                        remarque: remarque,
                        user_id: user_id
                    },                        
                    success: function(data) {
                        mat_codes = [];
                        $('#rest_form')[0].reset();
                    }
                });                   
            });

控制器:

public function createRest(Request $request) {
        ...
        $mat_res = array();
        for ($i = 0; $i < count($request->mat_codes); $i++) {
                    if(($request->mat_codes)[$i] != "") {
                        Restitution::firstOrCreate(['mat_code' => ($request->mat_codes)[$i], 'personnel_id' => $personnel->id], ['mat_code' => ($request->mat_codes)[$i], 'personnel_id' => $personnel->id, 'num' => $num, 'mois' => date('m'), 'restitution_code' => $num . "/" . date('m') . "/" . date("Y"), 'user_id' => $request->user_id]);
                        Materiel::where('mat_code', '=', ($request->mat_codes)[$i])->update(array('mat_etat' => 2));
                        $mat_res[$i] = DB::table('Materiels')->join('Types', 'Materiels.type_id', '=', 'Types.type_id')->select('Types.type_designation', 'Materiels.mat_designation', 'Materiels.mat_description', 'Materiels.mat_ns', 'Materiels.note')->where('mat_code', ($request->mat_codes)[$i])->first();
                    }
                }
        ...
        return view('Restitution', compact('nom', 'fonction', 'imei1', 'imei2', 'remarque', 'rest_code'), ['mat_res' => $mat_res]);
}

第二个视图:

@foreach($mat_res as $mat_res)
 ...
    <td>{{$mat_res->type_designation}}</td>
 ...
@endforeach

【问题讨论】:

  • 可能是因为mat_codes 没有定义。 @Sami 你检查过 Javascript 控制台吗?
  • ($request-&gt;mat_codes)[$i] != "") 可以简化为 isset($request-&gt;mat_codes[$i]) 仅供参考。是否启用了警告/错误?如果是这样,你有没有,如果有,它们是什么?您是否尝试通过将值输出到日志来对此进行调试?
  • 您没有在您的 ajax 上分配任何变量调用 mat_codes
  • 这证明@MD.JubairMizan 是对的。您不会在控制器中期望的 ajax 中发送所有数据。此外,这可能不相关,您的控制器代码容易出错。很难阅读。我认为Restitution::firstOrCreate(...) 有错误,您似乎中途中断了数组的构建。
  • @DimitriMostrey 非常感谢,感谢您,我解决了这个问题。

标签: php arrays laravel laravel-5 eloquent


【解决方案1】:

应该这样做。在提交事件中声明mat_codes

    $('#rest_form').on('submit', function(event) {
        //event.preventDefault();
        var mat_codes = [];
        ... //this is where you populate mat_codes
        var form_data = $(this).serialize();  //you can drop this line, you don't use it                  
        var personnel = $('#personnel').val();
        var fonction = $('#fonction').val();
        var service = $('#service').val();
        var user_id = $('#user_id').val();
        var remarque = $('#remarque').val();
        $.ajax({
            url: "{{ route('Restituter.createRest') }}",
            method: "POST",
            data: { mat_codes, personnel, fonction, remarque, user_id },
            success: function(data) {
                console.log(data); //this is coming from you controller
                mat_codes = [];
                $('#rest_form')[0].reset();
            }
        });                   
    });

附带说明,由于您使用的是 ES2015,而不是 personnel: personnel,只需在键和值相同时将 personal, fonction, ... 添加到数据对象。 jQuery 确切地知道它的含义。

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 2017-11-14
    • 2020-11-24
    • 2017-11-12
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2014-09-07
    • 2019-02-08
    相关资源
    最近更新 更多