Ami*_*deh 0 php datatables laravel yajra-datatable
问题:我需要在现金页面中使用“产品数据表”,其中“现金数据表”已存在于该页面上。
我已经搜索过这个问题,但令我惊讶的是之前没有人问过这个问题,所以当我找到这个问题的解决方案时,我决定与其他程序员分享我的解决方案。我希望它对你有用。
首先让我说一下我工作的版本。
现在我展示我的项目结构
我有路线:列表
GET|HEAD | cash | cash.index| App\Http\Controllers\CashController@index
GET|HEAD | product | product.index| App\Http\Controllers\ProductController@index
Run Code Online (Sandbox Code Playgroud)
CashController.php
public function index(CashDataTable $cashDataTable)
{
return $cashDataTable->render('cash.index');
}
Run Code Online (Sandbox Code Playgroud)
Cash.index.blade.php
{!! $dataTableCash->table(['id'=>'dataTable']) !!}
{!! $dataTableCash->scripts() !!}
Run Code Online (Sandbox Code Playgroud)
CashDataTable.php
使用App\Models\Cash;
class CashDataTable extends DataTable
public function dataTable($query)
{
$dataTable = new EloquentDataTable($query);
return $dataTable->addColumn('action', 'cash.datatables_actions');
}
public function html()
{
return $this->builder()
->columns($this->getColumns())
->minifiedAjax()
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
产品数据表.php
use App\Models\Product;
class ProductDataTable extends DataTable
public function dataTable($query)
{
$dataTable = new EloquentDataTable($query);
return $dataTable->addColumn('action', 'product.datatables_actions');
}
public function html()
{
return $this->builder()
->columns($this->getColumns())
->minifiedAjax()
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我认为“Yajra \ DataTables \ Services;” 旨在仅显示一张表,但我找到了解决方案:
首先,我们需要覆盖并更改 CashDataTable 和 ProductDataTable 中的默认 dataTable 变量,其次,我们需要直接在 HTML minifiedAjax 中设置路由 URL。
CashDataTable.php
use App\Models\Cash;
protected $dataTableVariable = 'dataTableCash';
class CashDataTable extends DataTable
public function dataTable($query)
{
$dataTable = new EloquentDataTable($query);
return $dataTable->addColumn('action', 'cash.datatables_actions');
}
public function html()
{
return $this->builder()
->columns($this->getColumns())
->minifiedAjax('/cash')
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
产品数据表.php
use App\Models\Product;
class ProductDataTable extends DataTable
protected $dataTableVariable = 'dataTableProduct';
public function dataTable($query)
{
$dataTable = new EloquentDataTable($query);
return $dataTable->addColumn('action', 'product.datatables_actions');
}
public function html()
{
return $this->builder()
->columns($this->getColumns())
->minifiedAjax('/product')
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在在 CashController 中,我们需要将变量设置为 HTML 构建器。
CashController.php
public function index(CashDataTable $cashDataTable, ProductDataTable $productDataTable)
{
$dataTableProduct = $productDataTable->html();
return $cashDataTable->render('cash.index', compact('dataTableProduct'));
}
Run Code Online (Sandbox Code Playgroud)
Cash.index.blade.php
{!! $dataTableCash->table(['id'=>'dataTableCash']) !!}
{!! $dataTableCash->scripts() !!}
{!! $dataTableProduct->table(['id'=>'dataTableProduct']) !!}
{!! $dataTableProduct->scripts() !!}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |