@@ -54,6 +54,7 @@ class Datatable
5454 'drawCallback ' => null ,
5555 //complete callback function
5656 'onCompleteCallback ' => null ,
57+ 'createdRow ' => false ,
5758 'ajaxUrl ' => null ,
5859 'ajaxType ' => 'GET ' ,
5960 'csrfToken ' => null ,
@@ -300,6 +301,7 @@ class Datatable
300301 columnDefs: [
301302 :definitionColumns
302303 ],
304+ :callbackCreatedRow
303305 language: :language,
304306 lengthMenu: :lengthMenu,
305307 //@todo add function callback in callback Datatable function
@@ -391,6 +393,10 @@ public function getTableHeaders()
391393 return $ this ->Helper ->Html ->tableHeaders ($ tableHeaders , $ headersConfig ['headersAttrsTr ' ], $ headersConfig ['headersAttrsTh ' ]);
392394 }
393395
396+ public function setCallbackCreatedRow (string $ functionCallback )
397+ {
398+ $ this ->setConfig ('createdRow ' , $ functionCallback );
399+ }
394400
395401 public function getDatatableScript (): string
396402 {
@@ -438,27 +444,35 @@ public function getDatatableScript(): string
438444 }
439445
440446 // @todo change values to config _default
447+ $ valuesToReplace = [
448+ 'getDataMethod ' => $ this ->getDataTemplate ,
449+ 'searchTemplate ' => $ searchTemplate ,
450+ 'columnSearchTemplate ' => $ columnSearchTemplate ,
451+ 'tagId ' => $ tagId ,
452+ 'fixedHeader ' => $ this ->getConfig ('fixedHeader ' ) ? 'true ' : 'false ' ,
453+ 'autoWidth ' => $ this ->getConfig ('autoWidth ' ) ? 'true ' : 'false ' ,
454+ 'pageLength ' => $ this ->getConfig ('pageLength ' ) ?? '10 ' ,
455+ 'processing ' => $ this ->getConfig ('processing ' ) ? 'true ' : 'false ' ,
456+ 'serverSide ' => $ this ->getConfig ('serverSide ' ) ? 'true ' : 'false ' ,
457+ 'configColumns ' => $ this ->configColumns ,
458+ 'definitionColumns ' => $ this ->getConfig ('definitionColumns ' ),
459+ 'language ' => json_encode ($ this ->getConfig ('language ' )),
460+ 'lengthMenu ' => json_encode ($ this ->getConfig ('lengthMenu ' )),
461+ 'drawCallback ' => $ this ->getConfig ('drawCallback ' ) ? $ this ->getConfig ('drawCallback ' ) : 'null ' ,
462+ 'onCompleteCallback ' => $ this ->getConfig ('onCompleteCallback ' ) ? $ this ->getConfig ('onCompleteCallback ' ) : 'null ' ,
463+ 'columnSearch ' => $ this ->getConfig ('columnSearch ' ) ? $ this ->columnSearchTemplate : '' ,
464+ 'tableCss ' => json_encode ($ this ->getConfig ('tableCss ' )),
465+ ];
466+
467+ if ($ this ->getConfig ('createdRow ' )) {
468+ $ valuesToReplace ['callbackCreatedRow ' ] = 'createdRow: ' . $ this ->getConfig ('createdRow ' ) . ', ' ;
469+ } else {
470+ $ valuesToReplace ['callbackCreatedRow ' ] = '' ;
471+ }
472+
441473 return Text::insert (
442474 $ this ->datatableConfigurationTemplate ,
443- [
444- 'getDataMethod ' => $ this ->getDataTemplate ,
445- 'searchTemplate ' => $ searchTemplate ,
446- 'columnSearchTemplate ' => $ columnSearchTemplate ,
447- 'tagId ' => $ tagId ,
448- 'fixedHeader ' => $ this ->getConfig ('fixedHeader ' ) ? 'true ' : 'false ' ,
449- 'autoWidth ' => $ this ->getConfig ('autoWidth ' ) ? 'true ' : 'false ' ,
450- 'pageLength ' => $ this ->getConfig ('pageLength ' ) ?? '10 ' ,
451- 'processing ' => $ this ->getConfig ('processing ' ) ? 'true ' : 'false ' ,
452- 'serverSide ' => $ this ->getConfig ('serverSide ' ) ? 'true ' : 'false ' ,
453- 'configColumns ' => $ this ->configColumns ,
454- 'definitionColumns ' => $ this ->getConfig ('definitionColumns ' ),
455- 'language ' => json_encode ($ this ->getConfig ('language ' )),
456- 'lengthMenu ' => json_encode ($ this ->getConfig ('lengthMenu ' )),
457- 'drawCallback ' => $ this ->getConfig ('drawCallback ' ) ? $ this ->getConfig ('drawCallback ' ) : 'null ' ,
458- 'onCompleteCallback ' => $ this ->getConfig ('onCompleteCallback ' ) ? $ this ->getConfig ('onCompleteCallback ' ) : 'null ' ,
459- 'columnSearch ' => $ this ->getConfig ('columnSearch ' ) ? $ this ->columnSearchTemplate : '' ,
460- 'tableCss ' => json_encode ($ this ->getConfig ('tableCss ' )),
461- ]
475+ $ valuesToReplace
462476 );
463477 }
464478
0 commit comments