Laravel DataTable如何将数据呈现为输入

时间:2017-09-11 09:43:43

标签: javascript php laravel datatables

我正在尝试使用Laravel DataTables和服务器端处理将我从ajax调用中获取的数据呈现为数字输入字段。

我按预期收回数据,但渲染没有发生,我看不到任何行。

<div class="row col-md-12 table-responsive">
                    <table class="table table-bordered table-striped" id="no-cost-price-table">
                        <thead>
                        <tr>
                            <th>{{ trans('labels.backend.table.store.best_profit_margin.product') }}</th>
                            <th>{{ trans('labels.backend.table.store.best_profit_margin.price_excl') }}</th>
                            <th>{{ trans('labels.backend.table.store.best_profit_margin.cost_price') }}</th>
                        </tr>
                        </thead>
                    </table>
                </div>
                <!-- /.col -->

这是我试图填充的表格。

$('#no-cost-price-table').DataTable({
        'processing': true,
        'serverSide': true,
        'ajax': '{!! route('admin.ajax.dashboard.no_cost_price.get') !!}',
        'responsive': true,
        'paging': true,
        'lengthChange': true,
        'searching': false,
        'ordering': false,
        'info': true,
        'autoWidth': false,
        'language': {
            'emptyTable': '{{  trans('strings.backend.stores.tables.no_products') }}',
            'lengthMenu': '{{ trans('strings.backend.stores.tables.menu') }}',
            'info': '{{ trans('strings.backend.stores.tables.info') }}',
        },
        'columns': [
            {data: 'name', name: 'name'},
            {data: 'price_excl', name: 'price_excl'},
            {
                data: 'data', name: 'cost_price_excl',
                render: function (data, type, row) {
                    console.log(data);
                    return '<input class="form-control" name="updateCostPrice" type="number" step="0.01" @input="updateCostPrice($event, ' + data.id + ')" value="' + data.cost_price + '"  >';
                }
            },
        ],
    });

这是我运行的脚本。

/**
 * All route names are prefixed with 'admin.ajax'.
 */
Route::group(['middleware' => 'access.routeIsXhr', 'prefix' => 'ajax', 'as' => 'ajax.'], function () {

Route::get('dashboard/get/NoCostPriceTable/', 'Ajax\DashboardController@getNoCostPriceData')
    ->name('dashboard.no_cost_price.get');

});

这是我的路线档案

public function getNoCostPriceData(Request $request)
{
    $store = access()->getCurrentStore();
    $website = $store->website();
    $limit = $this->getLimit($store);

    $data = \DB::table('store_data_products')->select('price_excl', 'cost_price_excl', 'name', 'store_data_product_id')->where([
        ['cost_price_excl', '=', 0],
        ['website_id', '=', $website->website_id],
    ])->when($limit, function ($query) {
        return $query->limit(100);
    })->get();

    $data = json_decode(json_encode($data), true);
    if (! empty($data)) {
        for ($i = 0; $i < count($data); $i++) {
            $data[$i]['price_excl'] = Number::money($data[$i]['price_excl']);
            $data[$i]['data'] = ['id' => $data[$i]['store_data_product_id'], 'cost_price' => $data[$i]['cost_price_excl']];
        }
    }

    return Datatables::of($data)->make(true);
}

这是ajax调用调用的函数。

我从我的ajax调用中获取行但是表仍然是空的。

我希望有人能够指出我可能犯的任何错误并解决这个问题。

0 个答案:

没有答案