如何在foreach循环中将数组索引用作表单名称?

时间:2018-02-23 17:03:47

标签: laravel

我正在尝试使用foreach循环生成表单列表。表单只是使用POST将其ID传递给我的控制器的项目名称,因此可以更新它们。我正在使用onclick =" form.submit()"采取行动。

当列表中只有一个项目时,这可以正常工作。

@foreach($items as $item)
{{ Form::open(['url'=>'item/view', 'name'=>'itemView']) }}
{{ Form::hidden('id', $item->id ) }}
  <li><a href="#" onclick="itemView.submit()">{{ $item->name }}</a></li>
{{ Form::close() }}
@endforeach

然而,只要&gt; 1项,我得到一个&quot; itemView.submt不是一个函数&#39;错误。我知道这是因为现在有重复的表单名称。

问题:如何使用数组索引使表单名称唯一?

我试过这个没有运气。

@foreach($items as $item)
{{ Form::open(['url'=>'item/view', 'name'=>'itemView[]']) }}
{{ Form::hidden('id', $item->id ) }}
  <li><a href="#" onclick="itemView[].submit()">{{ $item->name }}</a></li>
{{ Form::close() }}
@endforeach

我确信这是可能的,不确定如何。

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该使用onclick功能,例如:

@foreach($items as $key => $item)
    {{ Form::open(['url'=>'item/view', 'name'=>'itemView[]']) }}
    {{ Form::hidden('id', $item->id ) }}
        <li><a href="#" onclick="submitForm({{ $key }})">{{ $item->name }}</a></li>
    {{ Form::close() }}
@endforeach

但更好的方法是将所有JS保存在JS文件中,并将not mix PHP and JS保存在我的回购中:

<a href="#" class="js_link">{{ $item->name }}</a></li>

JS看起来像这样:

$('.js_link').on('click', function(e) {
    $(this).closest('form').submit();
});