我使用 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');
数据表服务类
对于
UsersDataTable
和 ProductsDataTable
服务类,包括我们上面创建的相关路由。// 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/