Создание цепочки «с» при возврате представления - PullRequest
0 голосов
/ 27 января 2019

поэтому в одном из вызовов Ajax я хочу вернуть индексное представление страницы с некоторыми данными, а также отправить дополнительные данные - сообщение.

Индексное представление выглядит примерно так:

public function index()
{
    // data retrieval

    $data = [
        'groups' => $groups,
        'info' => $info,

    ];
    return view('groups.index')->with('data', $data);
}

Теперь с помощью этого вызова Ajax

$(document).ready(function(){
    $('.group-delete-fa').click(function() {
        if (confirm('Remove user?')) {
            var id = $(this).attr('id');
            var idGroup = $(this).attr('value');
            $.ajax({
                headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
                method: "POST",
                url: "/remove_user",
                data: {id: id, idGroup: idGroup },
                success: function(response) {
                    $('body').html(response);
                    $('.dropdown-toggle').dropdown();

                },
                error: function(XMLHttpRequest, textStatus, errorThrown) { 
                    //alert(errorThrown);
                }       
            });
        }
    })
});

я вызываю эту функцию

public function removeUser(Request $request) {
    $id = $request->id;
    $idGroup = $request->idGroup;
    $user = User::find($id);

    //$user->groups()->detach($idGroup);

    $view = $this->show($idGroup);
    return $view->with('success', 'User  removed from group')->render();
}

Сообщение анализируется следующим образом (в корневом элементе jumbotron):

@if (session('success'))
    <div class="alert alert-success">
        {{session('success')}}
    </div>
@endif

Однако сообщение не отправляется вместе с $data и не анализируется.Я полагаю, вы не можете связать with() функцию, как это?Как я могу отправить дополнительные данные?

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 27 января 2019
  1. Вы передаете success как переменную представлению, а не сеансу.Попробуйте изменить в своем корневом элементе jumbotron session('success') на $success и убедитесь, что он существует первым с помощью isset.
    @if (isset($success))
        <div class="alert alert-success">
            {{$success}}
        </div>
    @endif
Или не используйте ajax и перенаправляйте на ту же страницу с сообщением в сеансе.
0 голосов
/ 27 января 2019

Хорошо, поэтому я сделал это:

return redirect('/groups/' . $idGroup)->with('success', 'User removed from the group.');

Что работает, но это хороший способ сделать это, если вы используете Ajax?

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