Custom Tools
model-grid has batch delete and refresh operations tools as default, model-grid provides custom tool functionality if there are more operational requirements, the following example will show you how to add a Gender selector button group tool.
First define the tool class app/Admin/Extensions/Tools/UserGender.php:
<?php
namespace App\Admin\Extensions\Tools;
use Ezadev\Admin\Admin;
use Ezadev\Admin\Grid\Tools\AbstractTool;
use Illuminate\Support\Facades\Request;
class UserGender extends AbstractTool
{
protected function script()
{
$url = Request::fullUrlWithQuery(['gender' => '_gender_']);
return <<<EOT
$('input:radio.user-gender').change(function () {
var url = "$url".replace('_gender_', $(this).val());
$.pjax({container:'#pjax-container', url: url });
});
EOT;
}
public function render()
{
Admin::script($this->script());
$options = [
'all' => 'All',
'm' => 'Male',
'f' => 'Female',
];
return view('admin.tools.gender', compact('options'));
}
}The blade file of view admin.tools.gender is resources/views/admin/tools/gender.blade.php:
Import this tool in model-grid:
In the model-grid, pass gender query to model:
You can refer to the above way to add your own tools.
Batch operation
At present, the default implementation of the batch delete operation, if you want to turn off the batch delete operation:
If you want to add a custom batch operation, you can refer to the following example.
The following example will show you how to implements a post batch release operation:
First define the tool class app/Admin/Extensions/Tools/ReleasePost.php:
See the code above, use ajax to pass the selected ids to back-end api through a POST request, the back-end api modifies the state of the corresponding data according to the received ids, and then front-end refresh the page (pjax reload), and pop-up a toastr prompt operation is successful.
Import this operation in model-grid:
So that the batch operation of the drop-down button will add the following two operations, the final step is to add an api to handle the request of the batch operation, the api code is as follows:
Then add a route for the api above:
This completes the entire process.
Last updated