首页 > 解决方案 > 如何在laravel中存储对象数组

问题描述

我有这个表格

<shipping-rules-form>
    <div class="row" v-for="(input,index) in form.inputs" :key="index" style="align-items: center;">
                    <div class="col-md-3 col-lg-3 form-group">
                        <label>Lower Bound</label>
                        <input type="text" name="lower_bound" v-model="input.lower_bound" class="form-control" placeholder="Upper Bound">
                    </div>
                    <div class="col-md-3 col-lg-3 form-group">
                        <label>Upper Bound</label>
                        <input type="text" name="upper_bound" v-model="input.upper_bound" class="form-control" placeholder="Lower Bound">
                    </div>
                    <div class="col-md-3 col-lg-3 form-group">
                        <label>Price</label>
                        <input type="text" name="price" v-model="input.price" class="form-control" placeholder="Price">
                    </div>
                    <div class="col-md-3 col-lg-3" style="font-size: 30px; display: flex; align-items: center;">
                        <a href="#" @click.prevent="addInput"><i class="fa fa-plus-circle" aria-hidden="true"></i></a>
                        <a href="#" @click.prevent="removeInput" v-show="form.inputs.length > 1"><i class="fa fa-minus-circle" aria-hidden="true" style="color: red;"></i></a>
                    </div>
                </div>
</shipping-rules-form>

我的 .js 文件有这个

import AppForm from '../app-components/Form/AppForm';
Vue.component('shipping-rules-form', {
    mixins: [AppForm],
    props:['cities','countries'],
    data: function() {
        return {
                inputs: [
                    {
                        lower_bound:'',
                        upper_bound:'',
                        price:'',
                    }
                ],
  
        };
    },
    methods: {
        addInput(){
            this.form.inputs.push({lower_bound:'',upper_bound:'',price:''});
        },
        removeInput(index){
            this.form.inputs.splice(index, 1);
        },
    },
    computed:{
        elements()
        {
            if(this.form.shippable_type == 1) {
                return this.countries;
            } else {
                return this.cities;
            }
        },

    }

});

我想将输入(对象数组)存储为 json

在我的控制器中,我已经这样做了

$json = $request->input('inputs');

但是 $json 是 return null 。

我正确地获取了所有其他数据,只有这返回 null。

我也尝试过纯粹使用 html 和 laravel 而不使用 vue 组件,但它返回给我 null 。

标签: phplaravelvue.js

解决方案


当您提交表单时,您可以将命名值作为 lower_bound 和 upper_bound 传递,但在控制器中您可以访问输入,这就是 $json 变量显示空值的原因。您可以使用 name 作为数组 name="lower_bound[]" 与 upper_bound 相同,并且在控制器中您可以通过索引号 $json = $request->lower_bound[0]; 访问简单的值


推荐阅读