一键提交由foreach循环创建的多种表单

时间:2018-10-12 22:18:43

标签: html laravel forms foreach

在刀片模板中,我使用foreach每次迭代创建一个表单。当前,每个表单都有一个提交按钮,但是我想使用一个提交按钮来提交所有表单,因为现在我不能同时提交所有表单。我该如何解决?

@if(count($task_criterias) > 0)
    @foreach($task_criterias as $task_criteria)
        <td class="card">
            <div>Description:{{$task_criteria->criteriadescription}}</div>
            <div>Maximum Mark:{{$task_criteria->maximummark}}</div>

            {!! Form::open([
                'action' => 'CriteriaMarksController@store',
                'method' => 'POST',
                'name' => "form"
            ]) !!}

            <div class="form-group" hidden >
                {{ Form::label('criteria_id', 'criteria_id') }}
                {{ Form::text('criteria_id', $task_criteria->id, ['class'=>'form-control']) }}
            </div>

            <div>
                {{ Form::label('selfmark','Mark ') }}
                {{ Form::number('selfmark', '',['placeholder'=>'', 'class' => 'col-lg-3 control-label']) }}
            </div>

            {!! Form::close() !!}
        </td>
    @endforeach

    <input type="button" class="btn btn-info " value="Submit" onclick="submitForms()" />

    <script>
        submitForms = function() {
            $("form").each(function(){
                $.ajax({
                    method:'POST',
                    url:'/criteria_marks/post',
                    data: $(this).serialize(),
                    success: function(r){
                        //...
                    }
                });
             });
         }
     </script>
@endif

2 个答案:

答案 0 :(得分:1)

每个请求只能提交一个帖子。最简单的解决方案之一是使用ajax执行多个请求:

<script>
submitForms = function() {
  $("form").each(function(){
        $.ajax({
            method:'POST',
            url:'* route to CriteriaMarksController@store *',
            data: $(this).serialize(),
            success: function(r){
                //...
            }
        });
    });
}
</script>

或者您可以制作一个大表格:

{!! Form::open([
            'action' => 'CriteriaMarksController@store',
            'method' => 'POST',
            'name' => "form"
     ]) !!}
@foreach($task_criterias as $key => $task_criteria)
    <td class="card">
      <div>Description:{{$task_criteria->criteriadescription}}</div>
      <div>Maximum Mark:{{$task_criteria->maximummark}}</div>

     <div>
       {{ Form::label('selfmark','Mark ') }}
       {{ Form::number('selfmark['.$task_criteria->id.']', '',
         ['placeholder'=>'', 'class' => 'col-lg-3 control-label']) }}
     </div>

   </td>
 @endforeach 
 <input type="submit" class="btn btn-info " value="Submit"  /> 
{!! Form::close() !!}

这将在帖子中形成id =>值对的关联数组自标记

答案 1 :(得分:0)

不确定如何使用Form门面。

您现在拥有的是:

<input name="criteria_id" value="{{ $task_criteria->id }}" />
<input name="selfmark" value="{{ $task_criteria->id }}" />

但是您需要具备的是:

<input name="criteria_id[]" value="{{ $task_criteria->id }}" />
<input name="selfmark[]" />

请注意输入名称中的[]