如何覆盖Laravel Voyager的Actions目录文件?

时间:2019-04-24 07:11:15

标签: laravel-5.8 voyager

在“旅行者”的“浏览页面操作”列中,具有以下按钮:

删除,查看和编辑

上述按钮的图标值来自存储在 / vendor / tcg / voyager / src / Actions /

中的各个操作文件中的getIcon()方法使用

例如:从 /vendor/tcg/voyager/src/Actions/DeleteAction.php@getIcon

获取的删除按钮图标值

现在,我想更改此值而不触摸上面的文件。

我将如何覆盖以上文件?


经过研究,我发现以下内容 由于某种原因,我将不得不覆盖以下文件:

\ vendor \ tcg \ voyager \ Voyager.php

在上面的文件中,DeleteAction是使用以下代码导入的:

使用TCG \ Voyager \ Actions \ DeleteAction;

1 个答案:

答案 0 :(得分:1)

创建您自己的Action类,可能会扩展原始的Voyager Action类:

App\Voyager\Actions\DeleteAction.php

<?php

namespace App\Voyager\Actions;

use TCG\Voyager\Actions\DeleteAction as VoyagerDeleteAction;

class DeleteAction extends VoyagerDeleteAction
{
    public function getIcon()
    {
        return 'my-custom-icon';
    }
}

用您的服务提供商中的默认操作替换您的默认操作:

App\Providers\AppServiceProvider.php

<?php

namespace App\Providers;

use App\Voyager\Actions\DeleteAction as MyDeleteAction;
use Illuminate\Support\ServiceProvider;
use TCG\Voyager\Actions\DeleteAction;
use TCG\Voyager\Facades\Voyager;

class AppServiceProvider extends ServiceProvider
{
    ...

    public function boot()
    {
        ...

        Voyager::replaceAction(DeleteAction::class, MyDeleteAction::class);

        ...
    }

    ...
}

您可以看到source of the replaceAction() method at [voyager]/src/Voyager.php:174