【问题标题】:How to override Actions directory file of Laravel Voyager?如何覆盖 Laravel Voyager 的 Actions 目录文件?
【发布时间】:2019-09-13 09:49:04
【问题描述】:

在 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;

【问题讨论】:

    标签: laravel-5.8 voyager


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 2020-12-12
      • 2017-11-18
      • 2019-07-19
      • 2018-05-07
      • 2023-03-29
      • 2013-08-06
      • 2012-07-29
      • 2010-10-06
      相关资源
      最近更新 更多