Laravel表单模型绑定动态表行和从db自动填充

时间:2016-12-30 16:00:28

标签: php laravel

Laravel 5.2

我的创建表单能够通过jquery动态添加tr行,以便将更多数据插入到db中。如何使用表单模型绑定(或其他方式)提取此数据并自动填充我的编辑表单。

由于Nazmul Hasan的评论更新:

代码示例:

查看:(供应商与供应商额外的关系很多)

    @foreach ($supplier['SupplierExtra'] as $extra)            
        <tr class="master">
            <td>{!! Form::text('SupplierExtraName[]', $extra->name, ['class' => 'form-control']) !!}</td>
            <td>{!! Form::text('SupplierExtraCost[]', $extra->cost, ['class' => 'form-control']) !!}</td>

控制器:(存储)

 foreach ($request->get('SupplierExtraName') as $i => $row) {
                if ($request->SupplierExtraName[$i] != null) {
                    Extra::create([
                        'supplier_id' => $supplier->id,
                        'name' => $request->SupplierExtraName[$i],
                        'cost' => $request->SupplierExtraCost[$i],
                    ]);
                }
            }

控制器:(更新) - 未知代码

如何告诉Laravel在db中更新哪一行?

2 个答案:

答案 0 :(得分:0)

根据您对问题的理解,您可以尝试以下方法:

1考虑到您已经第一手创建模型,获取所有模型。

如果您尚未创建模型,可以尝试:

php artisan make:model Example

为了举例,我们称之为示例模型。

这可能是它的数据:

----------------------------------------
ID       Name        Age         Phone
----------------------------------------
1        Sam         20          12345
2        Mia         23          11234

2首先从控制器中拉出所有数据

public function functionName(Example $example){
   //We try to filter based on what your id is, say, id = 1
   //then we store that inside a variable
   $example = App\Example::where('id', '=', $example->id)->get();

   //Passing the data using compact
   return view('yourview', compact('example'));
}

3使用您的数据填写表单

您需要使用foreach循环将数据放入此步骤,并使用&#39; value&#39;来设置值。 html标签内的属性。

<form>
@foreach($example as $e)

    <div class="input-group">
        <h2 class="input-group">Category's Name</h2>
        <!-- the $e->Name is from the data we passed previously -->
        <input type="text" class="form-control input-lg" name="Name" value="{{ $e->Name }}">
    </div>

@endforeach
</form>

猜猜什么会填充文字输入?那将是萨姆。

&#39;价值&#39;根据我的理解,文本输入中的属性是您远远看到的内容。

答案 1 :(得分:0)

因此,根据Nazmul Hasan评论,我的控制器中有以下商店功能

更新控制器:

        foreach ($request->get('SupplierExtraName') as $key => $row) {
            Extra::where('id', $key)->update([
                'name' => $request->SupplierExtraName[$key],
                'cost' => $request->SupplierExtraCost[$key],
            ]);

更新了视图:

@foreach ($supplier['SupplierExtra'] as $extra)
            <tr class="master">
                <td>{!! Form::text("SupplierExtraName[$extra->id]", $extra->name, ['class' => 'form-control']) !!}</td>
                <td>{!! Form::text("SupplierExtraCost[$extra->id]", $extra->cost, ['class' => 'form-control']) !!}</td>
                <td></td>
                <td>
                    <button type="button" class="btn btn-primary btn-md addRow">
                        <span class="glyphicon glyphicon-plus-sign"></span> Add a row
                    </button>
                </td>
            </tr>
        @endforeach