php - Laravel 数据表 - 一个 View 上的多个表

标签 php laravel datatables

我使用 laravel 5.4 和最新版本的 yajra/laravel-datatables 作为服务。

我在页面上使用一个数据表可以正常工作。我想创建一个不相关表的仪表板。用户、产品、预订等

我希望我的 Controller 看起来像这样:

public function index(ProductsDataTable $productDatatable, UsersDataTable $userDatatable)
{    
    $user = Auth::user();

    $products = $user->products;

    return view('admin.dashboard', compact('products', 'user', 'productDatatable', 'userDatatable'));
}

在我的 Blade 上做
@section('content')
{!! $productDatatable->table() !!}
{!! $userDatatable->table() !!}
@endsection

@push('scripts')
{!! $dataTable->scripts() !!}
@endpush

然而这显然行不通。我不确定如何继续。

我尝试为每个数据表创建一个路由,但不确定如何从我的仪表板 Controller 中引用它。

最佳答案

我确信在一个 View 中实现多个表有更好的方法,但这是我在查看 this 后想到的。 .评论/改进将不胜感激。

Controller

Controller 将在 index() 中呈现表一次方法,但将从 getUsers() 中获取数据方法或 getProducts()方法。

// DashboardController.php

public function index(UsersDataTable $usersDataTable, ProductsDataTable $productsDataTable)
{
    return view('dashboard.index', [
        'usersDataTable' => $usersDataTable->html(),
        'productsDataTable' => $productsDataTable->html()
    ]);
}

//Gets Users JSON

public function getUsers(UsersDataTable $usersDataTable)
{
    return $usersDataTable->render('admin.dashboard');
}

//Gets Products JSON

public function getProducts(ProductsDataTable $productsDataTable)
{
    return $productsDataTable->render('admin.dashboard');
}

路线

添加两个额外的路由,用于获取用户和项目数据。
// web.php

Route::get('/', 'DashboardController@index')->name('dashboard.index');
Route::get('projects', 'DashboardController@getProjects')->name('dashboard.projects');
Route::get('users', 'DashboardController@getUsers')->name('dashboard.users');


数据表服务类

对于 UsersDataTableProductsDataTable服务类,包括我们上面创建的相关路由。
// UsersDataTable.php

public function html()
{
    return $this->builder()
                ->minifiedAjax( route('dashboard.users') );
}

查看
// dashboard.blade.php

@section('content')

   {!! $productsDataTable->table() !!}
   {!! $usersDataTable->table() !!}

@endsection

@push('scripts')

   {!! $productsDataTable->scripts() !!}
   {!! $usersDataTable->scripts() !!}

@endpush

关于php - Laravel 数据表 - 一个 View 上的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45633297/

相关文章:

javascript - 在基于代码的数据表列设置中使用 colspan

php - Dompdf-Laravel Unicode 字符无法正确渲染

PHP 数组 : How to get this hexadecimal value from array

php - JQuery DataTables - 捕获 'ajax' 响应

php - 索引编制期间Elasticsearch MapperParsingException [无法解析,文档为空]

javascript - jquery 在外部 js 文件中工作,但在 View Blade 中不起作用

javascript - 在 Datatable 上格式化数据以 html 返回数据

php - 将函数名称存储在数据库中然后执行

php - 在 CodeIgniter 中启用 CSRF 为 TRUE

php - 在 Woocommerce 中的结帐更新 ajax 事件中刷新缓存的运输方式