Skip to content

Commit 61e9574

Browse files
committed
Add minifiedAjax method to minify url generated when using get request.
Fixes php artisan serve and IE issues on long URL. Related Issues: yajra/laravel-datatables#1225 yajra/laravel-datatables#1205 yajra/laravel-datatables#826 yajra/laravel-datatables#671 etc..
1 parent 8d1d18d commit 61e9574

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/Html/Builder.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,4 +695,50 @@ public function removeColumn(...$names)
695695

696696
return $this;
697697
}
698+
699+
/**
700+
* Minify ajax url generated when using get request
701+
* by deleting unnecessary url params.
702+
*
703+
* @param string $url
704+
* @param string $script
705+
* @param array $data
706+
* @return $this
707+
*/
708+
public function minifiedAjax($url, $script = null, $data = [])
709+
{
710+
$appendData = $this->makeDataScript($data);
711+
$this->ajax = [
712+
'ajax' => $url,
713+
'data' => "function(data) {
714+
for (var i = 0, len = data.columns.length; i < len; i++) {
715+
if (! data.columns[i].search.value) delete data.columns[i].search;
716+
if (data.columns[i].searchable === true) delete data.columns[i].searchable;
717+
if (data.columns[i].orderable === true) delete data.columns[i].orderable;
718+
if (data.columns[i].data === data.columns[i].name) delete data.columns[i].name;
719+
}
720+
delete data.search.regex;
721+
$appendData
722+
$script;
723+
}",
724+
];
725+
726+
return $this;
727+
}
728+
729+
/**
730+
* Make a data script to be appended on ajax request of dataTables.
731+
*
732+
* @param array $data
733+
* @return string
734+
*/
735+
protected function makeDataScript(array $data)
736+
{
737+
$script = '';
738+
foreach ($data as $key => $value) {
739+
$script .= PHP_EOL."data.{$key} = {$value};";
740+
}
741+
742+
return $script;
743+
}
698744
}

0 commit comments

Comments
 (0)