LoginSignup
1
1

More than 3 years have passed since last update.

【laravel-admin】【grid】Custom Actions Class

Posted at

gridの\Encore\Admin\Grid\Displayers\ActionsをoverrideしてCustomActionsを作る

CustomActions.php
namespace App\Admin\Controllers;

use Encore\Admin\Admin;

class CustomActions extends \Encore\Admin\Grid\Displayers\Actions
{
    protected $actions = ['edit'];
    protected function renderEdit()
    {
        if(false !== strpos($_SERVER["REQUEST_URI"], env('ADMIN_ROUTE_PREFIX', 'admin')."/auth")){
            return <<<EOT
<a href="{$this->getResource()}/{$this->getRouteKey()}/edit" class="{$this->grid->getGridRowName()}-edit">
    <i class="fa fa-edit"></i>
</a>
EOT;
        }else{
            $this->setupEditScript();
            return <<<EOT
<a href="{$this->getResource()}/" class="{$this->grid->getGridRowName()}-edit btn btn-xs btn-default">
    <i class="fa fa-edit"></i> 編集
</a>
EOT;
        }
    }
    protected function setupEditScript()
    {
        $trans = [
            'delete_confirm' => trans('admin.delete_confirm'),
            'confirm'        => trans('admin.confirm'),
            'cancel'         => trans('admin.cancel'),
        ];

        $script = <<<SCRIPT

$('.{$this->grid->getGridRowName()}-edit').click(function (e) {
    var id = $(this).closest('tr').find('.column-ID').text();
    id = $.trim(id);
    var currentHref = $(this).attr('href');
    var newHref = currentHref + id + '/edit';
    window.location.href= newHref;
});

SCRIPT;

        Admin::script($script);
    }
}
bootstrap.php
Encore\Admin\Grid\Column::define('__actions__', \App\Admin\Controllers\CustomActions::class);

gridの編集ボタン&それをクリックしたときの挙動を変えたかった時に対応しました。

\Encore\Admin\Grid\Displayers\ActionsをoverrideしたCustomActionsクラスを作って、bootstrap.phpに上記を追記します。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1