Отправить несколько форм, созданных циклом foreach, с помощью одной кнопки - PullRequest
0 голосов
/ 13 октября 2018

В моем шаблоне блейда я использую 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 голосов
/ 13 октября 2018

На запрос может быть отправлено только одно сообщение.Одним из самых простых решений является выполнение нескольких запросов с использованием 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() !!}

Это сформирует ассоциативный массив selfmark в post с id => пары значений

0 голосов
/ 13 октября 2018

Не уверен, как это сделать с 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[]" />

Обратите внимание на [] во входных именах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...