Laravel-admin: Grid里面的actions能自定义扩展的就更灵活了

Created on 12 Mar 2019  ·  3Comments  ·  Source: z-song/laravel-admin

https://github.com/z-song/laravel-admin/blob/acaf9b164f36fbe82bf400b279489e33d3a93734/src/Grid.php#L537
现在有个奇葩需求,操作里面的动作按钮,要同时显示图标和文字。
图片
我想自己Encore\Admin\Grid\Displayers\Actions复制一个修改一下。
Encore\Admin\Grid\Column::extend('actions', App\Admin\Extensions\Columns\Actions::class);这样扩展它。


另外我有个想法,Encore\Admin\Grid\Displayers\Actions生成url的时候,可不可以在edit/view里面加个特殊参数,这样在首次从list进入editview的时候根据这个参数把\URL::previous()保存进session里面,我就可以定义一个'后退'按钮,框架自带的list不好用,不带查询参数。有些时候,用户点进去edit里面编辑,如果修改数据后rules验证不通过或其他原因,他会在edit停留多次,或者它从edit进入view,从view进入eidt
{$this->getResource()}/{$this->getKey()}?_from_=list
{$this->getResource()}/{$this->getKey()}/edit?_from_=list

Most helpful comment

@ichynul 提交了一下优化,更新到dev-master版本可以用下面的方式来全局设置

在app/Admin/bootstrap.php里面

use App\Admin\Extensions\CustomActions;
use Encore\Admin\Grid;

Grid::init(function (Grid $grid) {
    $grid->actions(CustomActions::class);
});

All 3 comments

目前就可以实现

先自定义一个actions类继承laravel-admin的Encore\Admin\Grid\Displayers\Actions, 比如

<?php

namespace App\Admin\Extensions;

use Encore\Admin\Grid\Displayers\Actions;

class CustomActions extends Actions
{
    // 重写renderEdit方法加上`编辑`两个字
    protected function renderEdit()
    {
        return <<<EOT
<a href="{$this->getResource()}/{$this->getKey()}/edit">
    <i class="fa fa-edit"></i> 编辑
</a>
EOT;
    }
}

然后在grid里面:

// 先关掉laravel-admin内置的操作列
$grid->disableActions();

// 再插入上面自定义的操作列
$grid->column('actions', '操作')->displayUsing(CustomActions::class);

这样也行,就是每个$grid都要写一次,有点麻烦。

@ichynul 提交了一下优化,更新到dev-master版本可以用下面的方式来全局设置

在app/Admin/bootstrap.php里面

use App\Admin\Extensions\CustomActions;
use Encore\Admin\Grid;

Grid::init(function (Grid $grid) {
    $grid->actions(CustomActions::class);
});
Was this page helpful?
0 / 5 - 0 ratings

Related issues

zhenyangze picture zhenyangze  ·  3Comments

benny-sun picture benny-sun  ·  3Comments

amun1303 picture amun1303  ·  3Comments

chenyongmin picture chenyongmin  ·  3Comments

evans-kim picture evans-kim  ·  3Comments