Laravel 5一对多关系形式模型绑定

时间:2015-04-10 18:57:48

标签: forms laravel one-to-many laravel-5

我第一次使用Laravel,正在开发一个可以生成发票的应用程序。每张发票可以有多个职位。这意味着存在一对多的关系。

创建新发票时,有第一个位置的输入,通过ajax可以添加添加更多位置的输入。 我使用数组作为位置并制作随机索引。

<?php $c = rand(); ?>

{!! Form::text('position['.$c.'][title]', null, ['class' => 'form-control']) !!}
{!! Form::textarea('position['.$c.'][description]', null, ['class' => 'form-control']) !!}

到目前为止,这种方法完全正常 现在,在编辑发票时会出现问题。我需要做些什么来使Form-Model Binding工作?

现在我检查一下我有多少个位置,然后用常常输入的位置输入片段并传入数据。

@foreach( $document->positions as $position)
    @include('documents._position', [$position])
@endforeach

但值不会出现在输入字段中。我需要做些什么来实现这个目标?

第二件事是我如何同步这些职位?我现在只需在编辑发票并删除新发票后删除现有发票。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

要将数据传递到子视图,您需要以这种格式

进行
@include('view.name', ['some' => 'data'])

或者你的代码看起来是正确的

@foreach( $document->positions as $position)
    @include('documents._position', ['position' => $position])
@endforeach

因此,您可以在子视图中使用$position

{!! Form::text("position[$position->id][title]", $position->title, ['class' => 'form-control']) !!}
{!! Form::textarea("position[$position->id][description]", $position->description, ['class' => 'form-control']) !!}

来源:http://laravel.com/docs/5.0/templates#other-blade-control-structures