hi , sorry for english , this is my ajax method used for datatable :
Code:
public function ajax_data_from_conta(){
$request = service('request');
$postData = $request->getPost();
$dtpostData = $postData['data'];
$response = array();
## Read value
$draw = $dtpostData['draw'];
$start = $dtpostData['start'];
$rowperpage = $dtpostData['length']; // Rows display per page
$columnIndex = $dtpostData['order'][0]['column']; // Column index
$columnname = $dtpostData['columns'][$columnIndex]['data']; // Column numero_conta
$columnSortOrder = $dtpostData['order'][0]['dir']; // asc or desc
$searchValue = $dtpostData['search']['value']; // Search value
/*
['id','id_inventario','numero_conta','magazzino','fornitori_conto_lavoro','id_fase_tipo_prodotto_finito','username','codice_materiale','quantita','unita_misura','created_at','updated_at','deleted_at'];
*/
## Total number of records without filtering
$conta_materiale_model = new Conta_materialeModel();
$totalRecords = $conta_materiale_model->select('id')
->countAllResults();
## Total number of records with filtering
$totalRecordwithFilter = $conta_materiale_model->select('id_inventario')
->orLike('numero_conta', $searchValue)
->orLike('magazzino', $searchValue)
->orLike('fornitori_conto_lavoro', $searchValue)
->orLike('id_fase_tipo_prodotto_finito', $searchValue)
->orLike('username', $searchValue)
->orLike('codice_materiale', $searchValue)
->orLike('quantita', $searchValue)
->orLike('unita_misura', $searchValue)
->orLike('created_at', $searchValue)
->countAllResults();
## Fetch records
$records = $conta_materiale_model->select('*')
->orLike('id_inventario', $searchValue) //foreign key
->orLike('numero_conta', $searchValue)
->orLike('magazzino', $searchValue)
->orLike('fornitori_conto_lavoro', $searchValue)
->orLike('id_fase_tipo_prodotto_finito', $searchValue) //foreign key
->orLike('username', $searchValue)
->orLike('codice_materiale', $searchValue)
->orLike('quantita', $searchValue)
->orLike('unita_misura', $searchValue)
->orLike('created_at', $searchValue) //date
->orderBy($columnname,$columnSortOrder)
->findAll($rowperpage, $start);
$data = array();
//print_r($records);
//die();
foreach($records as $record ){
$data[] = array(
"id"=>"<a href='/admin_Conta_materiale/eliminaRecord/".$record->id."' alt='elimina' class='btn btn-danger btn-xs' onClick=\"return confirm('Sei sicuro di voler eliminare il record?');\" title='elimina'><i class=\"fa-solid fa-trash\"></i></a>",
"id_inventario"=>$record->id_inventario, //$record->inventario()->nome,
"numero_conta"=>$record->numero_conta,
"magazzino"=>$record->magazzino,
"fornitori_conto_lavoro"=>$record->fornitori_conto_lavoro,
"id_fase_tipo_prodotto_finito"=>$record->tipo_prodotto_finito()->nome.' '.$record->fase_tipo_prodotto_finito()->numero,
"username"=>$record->username,
"codice_materiale"=>$record->codice_materiale,
"quantita"=>$record->quantita,
"unita_misura"=>$record->unita_misura,
"created_at"=>$record->created_at,
);
}
## Response
$response = array(
"draw" => intval($draw),
"iTotalRecords" => $totalRecords,
"iTotalDisplayRecords" => $totalRecordwithFilter,
"aaData" => $data,
"token" => csrf_hash() // New token hash
);
return $this->response->setJSON($response);
}
And this is the view :
Code:
<?= $this->extend('templates/layout_admin') ?>
<?= $this->section('content') ?>
<link rel="stylesheet" href="https://cdn.datatables.net/1.12.1/css/jquery.dataTables.min.css">
<?= $this->endSection() ?>
<?= $this->section('content') ?>
<!-- Page Header-->
<div class='card'>
<div class='card-header'>
<h4>Conta Materiale</h4>
</div>
<div class='card-body'>
<div class="row " style="margin-right: 10px; margin-top: 20px;margin-bottom: 20px;">
<div class="col-md text-end">
<a href="<?=base_url()?>/admin_Conta_materiale/inserisciRecord" class="btn btn-success" ><i class="fa fa-plus-square "></i> Crea Conta Materiale </a>
</div>
</div>
<div class="card-title d-flex align-items-center">
<div><i class="bx bxs-user me-1 font-22 text-primary\"></i>
</div>
<h5 class="mb-0 text-primary"> Lista Conta_materiale</h5>
</div>
<div class="table-responsive">
<table id="tabella-catalogo" class="table dt-responsive activate-select cell-border table-hover stripe" style="width: 100%;">
<thead>
<tr>
<th class=''><i class='mdi mdi-filter'></i> Opzioni </th>
<th class=''>Inventario</th>
<th class=''>Numero Conta</th>
<th class=''>Magazzino</th>
<th class=''>Fase</th>
<th class=''>Fornitore</th>
<th class=''>Username</th>
<th class=''>Codice Materiale</th>
<th class=''>Quantita</th>
<th class=''>Unita Misura</th>
<th class=''>Inserito </th>
</tr>
</thead>
</table>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('script') ?>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.12.1/js/jquery.dataTables.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/buttons/2.2.3/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.html5.min.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/select/1.5.0/js/dataTables.select.min.js"></script>
<!-- END Datatables -->
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.13/sorting/datetime-moment.js"></script>
<!-- Datatables -->
<script>
$(document).ready(function() {
$.fn.dataTable.moment( 'DD-MM-YYYY HH:mm:ss');
$("#tabella-catalogo").DataTable({
'processing': true,
'serverSide': true,
'serverMethod': 'post',
'ajax': {
'url':"<?= '/ajaxDatatable/ajax_data_from_conta'?>",
'data': function(data){
// CSRF Hash
var csrfName = $('.txt_csrfname').attr('name'); // CSRF Token name
var csrfHash = $('.txt_csrfname').val(); // CSRF hash
return {
data: data,
[csrfName]: csrfHash // CSRF Token
};
},
dataSrc: function(data){
// Update token hash
$('.txt_csrfname').val(data.token);
// Datatable data
return data.aaData;
}
},
'columns': [
{ data: 'id' },
{ data: 'id_inventario' },
{ data: 'numero_conta' },
{ data: 'magazzino' },
{ data: 'id_fase_tipo_prodotto_finito' },
{ data: 'fornitori_conto_lavoro' },
{ data: 'username' },
{ data: 'codice_materiale' },
{ data: 'quantita' },
{ data: 'unita_misura' },
{ data: 'created_at' },
]
});
});
</script>
<?= $this->endSection() ?>
Datatable is showed properly but the search don't work with culumn where i use entity as td's values (3 culumns , 2 foreign key and created_at) :
Code:
"id_inventario"=>$record->inventario()->nome,
"id_fase_tipo_prodotto_finito"=>$record->tipo_prodotto_finito()->nome.' '.$record->fase_tipo_prodotto_finito()->numero,
"created_at"=>$record->created_at,
$record->created_at is dysplayed as [Object Object] .
There is a way to search with entity's values instead of db's values ?