【问题标题】:Laravel 5 One To Many Relation Form Model BindingLaravel 5 一对多关系形式模型绑定
【发布时间】:2015-04-10 18:57:47
【问题描述】:

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

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

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

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

到目前为止,这一切都很好。
现在,当涉及到编辑发票时,问题就出现了。我必须做什么才能让表单模型绑定正常工作?

现在我检查我有多少个位置,并使用经常输入的位置输入加载 sn-p 并传入数据。

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

但值不会出现在输入字段中。我必须做些什么才能让它发挥作用?

第二件事是如何同步位置?我现在只是在编辑发票后删除现有的并制作新的。有没有更好的方法来做到这一点?

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • “您可以在子视图中使用 $position”是什么意思?我必须做什么才能将值应用于输入?输入的名称是这样的 name="project[random][title]"
    • 不应使用随机值进行编辑,而应使用 position_id。否则你将不知道哪一行需要更新。
    • 是的,更新是一回事 - 我需要新职位的随机值,但可以避免现有职位的随机值。另一件事是,这些值不会出现在输入中。即使我使用 position_id - 比如 name="position[5][title]" 你知道我该如何管理吗?
    • 我更新了我的代码。只需将null 替换为$position-&gt;title$position-&gt;description 之类的值。
    猜你喜欢
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2016-04-02
    • 1970-01-01
    相关资源
    最近更新 更多