mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Implement filter helpers for ajax table controllers (#9660)
Reduces boiler plate code.
This commit is contained in:
@@ -65,7 +65,7 @@ abstract class PaginatedAjaxController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines search fields will be searched in order
|
||||
* Defines search fields. They will be searched in order.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
@@ -76,6 +76,18 @@ abstract class PaginatedAjaxController extends Controller
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines filter fields. Request and table fields must match.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
||||
*/
|
||||
protected function filterFields($request)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Format an item for display. Default is pass-through
|
||||
*
|
||||
@@ -88,7 +100,7 @@ abstract class PaginatedAjaxController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string
|
||||
* @param string $search
|
||||
* @param Builder $query
|
||||
* @param array $fields
|
||||
* @return Builder
|
||||
@@ -107,6 +119,23 @@ abstract class PaginatedAjaxController extends Controller
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param Builder $query
|
||||
* @param array $fields
|
||||
*/
|
||||
protected function filter($request, $query, $fields)
|
||||
{
|
||||
foreach ($fields as $target => $field) {
|
||||
if ($value = $request->get($field)) {
|
||||
if (is_string($target)) {
|
||||
$query->where($target, $value);
|
||||
} else {
|
||||
$query->where($field, $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the given request with the given rules.
|
||||
|
||||
Reference in New Issue
Block a user