在返回视图时链接“ with”语句

时间:2019-01-27 09:56:40

标签: php ajax laravel laravel-blade

所以在一个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 :(得分:1)

  1. 您要将success作为变量传递给视图,而不是会话中。 尝试为session('success')更改根巨型jumbotron元素$success,以确保它首先存在于isset中。
    @if (isset($success))
        <div class="alert alert-success">
            {{$success}}
        </div>
    @endif
  1. 或者不要使用ajax并在会话中将消息重定向到同一页面。

答案 1 :(得分:0)

好的,所以我这样做了:

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

哪种方法有效,但是如果您使用Ajax,这是一种很好的方法吗?