如何在 Laravel 的 DataTable 列表页面中更新状态

Posted

技术标签:

【中文标题】如何在 Laravel 的 DataTable 列表页面中更新状态【英文标题】:How to update status in DataTable listing page in Laravel 【发布时间】:2020-05-30 00:20:51 【问题描述】:

我需要不刷新列表页面更新记录状态。我已经尝试过刷新整页,但我想要一个带有 Laravel 规则的 AJAX 功能。

【问题讨论】:

你能给我们看一些代码吗? 虽然我们需要看一些代码才能完全理解......你可以看看这个:datatables.net/manual/ajax这可能是你需要的 【参考方案1】:

在页脚中添加 Jquery

添加列表查看页面这个功能

添加您的数据表

$('#table_user').on('click', '.status_clik', function()           
 var sid = $(this).attr("sid");
$.ajax(
    type: "POST",
    url: '/pageController/updateStatus',
    data: id: sid,
    success: function(response)  // Change elements in the DOM ,
);
);

在控制器页面中

class PageController 
    public function status(Request $request)
        $id = $request->get('id');
        if($id!='')
            $geStatus = DB::table('tablename')->where('id', $id)->first();

            $update_data = array('eStatus'=>GET_OPPOSITE_STATUS[$geStatus->eStatus]);
            $update = DB::table('tablename')->where('id', $id)->update($update_data);
            if($update)

                return response()->json(array("status"=>1,"message"=>'Status updated successfully'));

            else return response()->json(array("status"=>0,"message"=>_FAIL_TO_PROCESS)); 
        elsereturn response()->json(array("status"=>0,"message"=>_FAIL_TO_PROCESS));
    



【讨论】:

【参考方案2】:

如果您想使用 Ajax 更新记录,您必须在模板中实现 Ajax 并请求执行更改的控制器方法。

jQuery 示例:

$.ajax(
    type: "POST",
    url: '/pageController/updateStatus',
    data: id: 15, status: 'example',
    success: function(response)  // Change elements in the DOM ,
);

这会将页面 ID 和状态发布到 updateStatus 控制器方法。成功后,您可以更新 DOM 中的值。

控制器示例:

class PageController 
    public function updateStatus(int $id, $status) 
        $page = Page::findOrFail($id);
        $page->status = $status;
        $page->save();

        return $page->status;
    

在控制器中,您在 Page 模型中搜索给定的 ID。然后你更新状态,保存它,然后返回新的状态,这样你就可以在前端使用它了。

【讨论】:

以上是关于如何在 Laravel 的 DataTable 列表页面中更新状态的主要内容,如果未能解决你的问题,请参考以下文章

编辑列日期格式后不显示过滤日期 - Laravel Yajra Datatable

如何在 Laravel 的 DataTable 列表页面中更新状态

如何通过 Laravel DataTable 显示 HTML?

Laravel 8 Yajra DataTable 在同一页面刷新

Laravel,Yajra Datatable,如果 y 那么如何返回 Yes else No

如何在 DataTable 中保留固定列?