Массив сохраняется в базе данных в виде строки, теперь необходимо разместить строку в отдельных полях ввода из базы данных - Laravel - PullRequest
0 голосов
/ 26 апреля 2018

Так что это довольно сложный вопрос. Исходя из моего последнего вопроса, который показывает, как я сохраняю массив в базу данных. Ошибка преобразования массива в строку Laravel - Попытка сохранить массив в базу данных - Возможно, мне придется изменить способ сохранения в базе данных, чтобы он отображался правильно.

Я использую API карт Google в laravel, где пользователь может создать маршрут, сохранить его (в базе данных), а после входа в систему снова просмотреть его, отредактировать или удалить.

Функция waypoints работает, поэтому при нажатии кнопки + появляются дополнительные поля ввода - так пользователь их добавляет.

функция путевых точек при показе. Клинок

            var counter = 1;
            var limit = 10;
            var i = 0;
            function addInput(divName) {
              if (counter == limit) {
                alert("You have reached the limit of adding " + counter + " additional destinations");
              } else {
                var newbr = document.createElement('br');
                var newinput = document.createElement("input");
                newinput.setAttribute("name","waypoints");
                newinput.setAttribute("autocompute","on");
                newinput.setAttribute("type", "text");
                newinput.setAttribute("class", "form-control");

                // newin = (counter + 1) + "<input type=text name=waypoints autocomplete=on>";
                document.getElementById(divName).appendChild(newbr);
                document.getElementById(divName).appendChild(newinput);
                counter++;
                i++;
                console.log("cntr=" + counter + " i=" + i + " waypoints.length=" +document.getElementsByName("waypoints"));
                // var inputw = waypoints[i];
                var autocompletew = new google.maps.places.Autocomplete(newinput);
                autocompletew.setComponentRestrictions({'country':['uk','irl']});

              }
            }

Сохраняется в базу данных, как показано в myroutescontroller.php

public function store(Request $request)
{   
    if (Auth::check()) {

        Myroutes::create([ //posting to acc table
            'user_id' => Auth::user()->id,
            'start' => $request->start,
            'end' => $request->end,
            'waypoints' => $request->waypoints
        ]);
        return redirect('/');
    } else {
        return redirect('/login');
    }   

}

И показывает из базы данных в show.blade

                <div id="dynamicInput" class="form-group">
                    <label>Additional Destinations</label>
                    <input type="text" name="waypoints" class="form-control" autocomplete="on" value="{{ $myroute->waypoints }}">
                </div>

                <input type="button" class="btn btn-secondary" value="+" onClick="addInput('dynamicInput');" style="padding:0 10px;">

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

Когда это должно выглядеть следующим образом (это когда пользователь создает и добавляет маршрут в базу данных). добавление в базу данных

Буду очень признателен за любые идеи и помощь, поскольку я знаю, что это довольно сложно, спасибо!

1 Ответ

0 голосов
/ 26 апреля 2018

Сохраните ваш массив в виде строки с json_encode($array), а затем получите его json_decode($array).

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