Как передать несколько данных формы с помощью одной кнопки отправки - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь опубликовать формы с мультиязычностью. Например у меня есть en, es, ru язык. Мне нужно сохранить EN на одну таблицу. Es и ru формы должны быть сохранены в таблице переводов. Но я не могу передать все данные в функцию controller @ store. Как я могу передать все данные отдельно для контроллера?

Я передаю языки с компактным. Вот так:

public function index()
{
    $langs = [];
    foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties)
    {
        $langs[]= $localeCode;
    }

    return view('backEnd.langview', compact('langs'));
}

В представлении у меня есть панель вкладок для каждого языка. Это вид:

@foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties)
@if($loop->first)
    <div class="tab-pane animated fadeIn text-muted active" id="tab{{$localeCode}}" aria-expanded="false">{{$localeCode}}
        <form method="POST" id="form{{$localeCode}}" action="{{route('send_slug')}}">
        {{csrf_field()}}
            <input type="text" name="main_title" placeholder="title here">
            <input type="text" name="main_slug" placeholder="slug here">
        </form>
    </div>
@else
    <div class="tab-pane animated fadeIn text-muted" id="tab{{$localeCode}}" aria-expanded="false">{{$localeCode}}
    <form method="POST" id="form{{$localeCode}}" action="{{route('send_slug')}}">
    {{csrf_field()}}
        <input type="text" name="title[]" placeholder="title here other languages">
        <input type="text" name="slug[]" placeholder="slug here other languages">

    </form>
    </div>
@endif

@ endforeach

Я пробовал это с ajax:

<script>
var langcodes = @json($langs);
var i = 0;
submitForms = function(){
    langcodes.forEach(function (data) {
        i++;
        var formdata = $('#form'+data).serialize();
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
        });
        jQuery.ajax({
            url: '{{route('send_slug')}}',
            method: 'post',
            data: {
                formdata
            }
        });
    });
}

Но при каждой попытке я могу передать только первый язык или последний язык. Мне нужно отправить все языки отдельно. Я надеюсь, что смогу выразить себя. Извините за мой язык. Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 05 сентября 2018

Как насчет этого?

<form method="POST" action="{{route('send_slug')}}">
    {{csrf_field()}}

    @foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties)
      <div>
          {{$localeCode}}
          <input type="hidden" name="response[i][lang]">

          @if($loop->first)
                <input type="text" name="response[i][title]" placeholder="title here">
                <input type="text" name="response[i][slug]" placeholder="slug here">
          @else
                <input type="text" name="response[i][title]" placeholder="title other language here">
                <input type="text" name="response[i][slug]" placeholder="slug other language here">
          @endif
      </div>
    @endforeach
 <button type="submit">Send</button>
 </form>
0 голосов
/ 05 сентября 2018

для использования для каждого языкового цикла, чтобы попробовать пример кода удара:

<?php
$language = array();
foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties){
    $language[] = "#form".$localeCode;
}

$formString = implode(",",$language);

echo $formString;

?>

<script>
var forms = "<?php echo $formString;?>";
var formdata = $(forms).serialize();

</script>
0 голосов
/ 05 сентября 2018

При просмотре вашего кода вам не нужно несколько форм, чтобы получить то, что вы хотите. Вы должны передать массив как запрос вашему контроллеру.

0 голосов
/ 05 сентября 2018

попробуйте это для передачи нескольких данных формы в ajax

var formdata = $("#form1, #form1").serialize();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...