Bonjour les ami(e)s,
J'ai un gro petit soucis, je m'explique:
j'ai un tableau avec DataTable de jquery, les données qui y sont ont des sous categories, pour les charger sur la même table bah je detruit les données qui y sont et je recharge juste le contenue de ma table.La recherche marche a la page de demarrage mais après avoir changer le contenue la recherche ne marche pas et si je regarche la page bah elle reviens a la page initiale au lieu de garder les donnée qui y sont deja.
Mon script:
// ===========================
// Init datatable
// ===========================
publics.bindInitDatatable = function (id = null, type = null) {
// $.fn.dataTable.ext.legacy.ajax = true;
var $this = $('#antibiotic_datatable');
if (null != id || (null != id && null != type)) {
$this.DataTable().clear().destroy();
}
var aoColumns = [{"bSortable": false, "bVisible": false}, {"bSortable": true}, {"bSortable": true}, {"bSortable": true}, {"bSortable": false}];
var sAjaxSource = id == null
?
Routing.generate('antibiotic_ajaxGetListRefdata')
:
null == type
?
Routing.generate('antibiotic_ajaxGetListRefdata', {'id' : id})
:
Routing.generate('antibiotic_ajaxGetListRefdata', {'id' : id, 'type': type})
;
$this.DataTable(
{
"pageLength": 10,
"aoColumns": aoColumns,
"order": [[ 0, "desc" ]],
"bProcessing": true,
"bServerSide": true,
"searching": true,
"sAjaxSource": sAjaxSource,
"paging": true,
"oLanguage": {
"sProcessing": "traitement...",
"oPaginate": {
"sPrevious": "Précédente",
"sNext": "Suivante",
},
"sSearch": "Filtrer: ",
"sLengthMenu": "Afficher _MENU_ enregistrements par page",
"sEmptyTable": "Aucune Hierarchie d'Antibiotique trouver!",
"sInfo": "Enregistrement(s) de _START_ à _END_ sur _TOTAL_"
},
"drawCallback": function(settings) {
if (null != id) {
$('.antibiotic_return').show();
$('.antibiotic_return').attr('data-id', id);
if (null != type) {
$('.antibiotic_return').attr('data-type', type);
$('.antibiotic_return').attr('data-parent', $('.antibiotic_return').data('parent'));
}
}
}
});
};
publics.show = function () {
$('body').on('click', '.subcategory', function (event) {
event.preventDefault();
var id = $(this).data('id');
var type = $(this).data('type');
if (null != type) {
$('.antibiotic_return').attr('data-parent', id);
}
publics.bindInitData $this.DataTable().clear().destroy();table(id, type);
});
};
publics.showParent = function () {
$('body').on('click', '.antibiotic_return', function (event) {
event.preventDefault();
var id = $(this).data('id');
var type = $(this).data('type');
if (0 != id && 0 == type ) {
privates.return(id);
$('.antibiotic_return').hide();
}
else if (0 != id && null != type) {
id = $(this).data('parent');
$('.antibiotic_return').attr('data-parent',);
$('.antibiotic_return').attr('data-type', id);
$('.antibiotic_return').attr('data-id');
privates.return(id, type);
$('.antibiotic_return').hide();
}
});
};
privates.return = function (id = null, type = null) {
var $this = $('#antibiotic_datatable');
$this.DataTable().clear().destroy();
if (null != id && null == type) {
publics.bindInitDatatable();
}
else if (null != id && null != ty
pe) {
publics.bindInitDatatable(id);
}
};
Mon Controller :
/**
* @Route("/ajaxGetListRefdata", options={"expose"=true}, name="antibiotic_ajaxGetListRefdata", methods="GET")
*
* @param Request $request
* @param array $sortings
* @param array $options
*
* @return Response
*/
public function ajaxGetListRefdataAction(Request $request, array $sortings = [], array $options = []): Response
{
$sortings = $this->getSortings(
$request,
[
'object.createdAt',
'object.label',
'object.type',
'object.enabled',
]
);
if ($request->query->has('id')) {
$options['id'] = $request->query->get('id');
}
if ($request->query->has('type')) {
$options['type'] = $request->query->get('type');
}
return parent::ajaxGetListRefdataAction($request, $sortings, $options);
}
Et voici le repository ou se trouve les requetes:
/**
* @param array $options
*
* @return QueryBuilder|mixed
*/
public function createQueryBuilderFindDataReference(array $options = [])
{
$queryBuilder = $this->createQueryBuilder('object')
->andWhere('object.type = :grandParent');
$params = [ 'grandParent' => AntibioticHierarchy::TYPE_CLASS ];
if (array_key_exists('search', $options)) {
$search = '%' . mb_strtolower($options['search']) . '%';
$queryBuilder->andWhere(
'LOWER(object.label) LIKE :search
OR LOWER(object.type) LIKE :search
'
);
$params['search'] = $search;
}
if (array_key_exists('id', $options)) {
$queryBuilder->innerJoin('object.category', 'category')
->andWhere(' category.id = :category_id');
$params['category_id'] = $options['id'];
$params['grandParent'] = AntibioticHierarchy::TYPE_SUBCLASS;
}
if (array_key_exists('type', $options) && "" !== $options['type']) {
$params['grandParent'] = AntibioticHierarchy::TYPE_ANTIBIOTIC;
}
$queryBuilder->setParameters($params);
return $queryBuilder;
}
Si quelqu'un pouvais m'aider se serai vraiment sympa car ça fait des heures que je bloque.
Merci