Laravel 5.6 вводит лезвие в поле зрения через вызов ajax - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно добавить логику в мой взгляд с помощью ajax-вызова.Я не уверен, возможно ли это вообще или есть другой способ?

Что я пытаюсь сделать:

axios.post('/buildingimage', formData, { headers: {'Content-Type': 'multipart/form-data' }})
        .then(response => {
            e.preventDefault();

            $('.errorMessages').hide();
            let building = response.data.building;

            let resultInfo = "";

            $('.successMessages').show();

            let newBuilding = "<tr>" +
                "                  <td>" + building.location + " </td>" +
                "                  <td>" + building.source + "</td>" +
                "                  <td>" + building.disc + "</td>" +
                "                  <td>" + building.result + "</td>" +
                "                  <td>" + resultInfo + "</td>" +
                "                  <td> Edit form </td>" +
                "                  @can('Delete buildings')" +
                "                  <td>" +
                "                      {!! Form::open(['class' => 'deleteBuildingForm', 'method' => 'DELETE', 'route' => ['buildingimage.destroy', " + building.id + "] ]) !!}" +
                "                              <button type='submit' class='btn btn-danger'>" +
                "                              <i class='far fa-trash-alt'></i>" +
                "                          </button>" +
                "                      {!! Form::close() !!}" +
                "                  </td>" +
                "                  @endcan" +
                "              </tr>";

            $(".buildingsTable > tbody:last-child").append(newBuilding);
        })
        .catch(error => {
            if (error.response) {
                $('.errorMessages').show();
                $('.successMessages').hide();

                $.each(error.response.data.errors, function(key, value) {
                    $('.errorMessagesList').append('<li>' + value + '</li>');
                });
            }
    });

Как вы видите форму, которую я пытаюсь сделатьна самом деле это не форма, а просто строка.Я не уверен, как я могу это исправить.

Хитрость в том, что это должно быть в td таблицы.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018
Laravel provides render() method to render any of the view from view directory. 
if you want to render any of the view then you can write it as 
view('auth.viewname',$dataarray)->render()

where $dataarray contains the data to be carried to the that view. Here is the example - 
in the controller (on ajax method)
write it like 
return response()->json(view('viewname)->render()));
and then use the response in the ajax to append any html block
0 голосов
/ 14 ноября 2018

Я полагаю, у вас есть ответ JSON?В этом случае вы можете добиться этого, визуализируя представление напрямую с помощью метода render() в классе View Factory.

return response()->json([
    'data' => [
        'building' => $buildingCollection,
        'view' => view('path.to.view')->render(),
    ],
]);

Ваш javascript tr и td в этом не должен бытьpoint.

Ваша логика рендеринга таблицы может быть на стороне сервера, а не во внешнем интерфейсе.Моим личным предпочтением было бы сделать это на внешнем интерфейсе.

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