【问题标题】:Laravel Voyager BREAD Image Edit and Delete IssueLaravel Voyager BREAD 图像编辑和删除问题
【发布时间】:2018-05-30 16:31:13
【问题描述】:

我在使用 voyager BREAD 系统上传图片时遇到了问题。如果我使用 BREAD 删除或更新图像,则旧图像不会被替换或删除。它仍然在存储目录中。我正在使用最新版本的 voyager 和 laravel 5.5。这个问题有什么解决办法吗?提前谢谢您。

【问题讨论】:

    标签: laravel voyager


    【解决方案1】:


    Laravel Voyager 1.2 类文件中没有 public function deleteBreadImages($data, $rows) {...}
    vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php

    在谷歌搜索同一问题两天后,我找到了硬解...
    在我的情况下,图像字段名称是 img,模型名称是 Company
    代码在模型 BREAD 更新时执行

    适用于 Voyager 1.2 希望对你有帮助))

    use Storage;
    
    class Company extends Model
    {
        public static function boot()
        {
            parent::boot();
    
            static::updating(function($model)
            {   
                // Check if Old File Exists
                $oldFileExists = Storage::disk('public')->exists($model->original['img']);
    
                // If Old File Exists DELETE it, else Continue Adding New Image
                if($oldFileExists)
                {
                    //Get File Extension:: .jpg .png .gif
                    $fileExt = substr(strrchr($model->original['img'], "."), 0);
    
                    //If File is not .GIF
                    if($fileExt != '.gif'){
                        // Delete Old Non-GIF Image
                        Storage::disk('public')->delete($model->original['img']);
                    }
    
                    // Find .gif , -static.gif Old Images And Delete
                    else{
    
                        // filename-static.gif
                        $staticOld = str_replace($fileExt,"-static".$fileExt,$model->original['img']);
                        // Delete Old Image.gif
                        Storage::disk('public')->delete($model->original['img']);
                        // Delete Old Image-static .gif if Exists
                        if($staticOld) Storage::disk('public')->delete($staticOld);
    
                    }
                }
            });
        }
    }
    

    【讨论】:

      【解决方案2】:

      您好,请检查您项目的vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php 目录中的以下文件

      检查一下

      public function deleteBreadImages($data, $rows) {...}
      

      第 403 行的函数。

      在此函数中找到$this->deleteFileIfExists($data->{$row->field}); 使其取消注释并检查。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2020-10-07
        • 2017-11-18
        • 2021-07-05
        • 2019-06-15
        • 1970-01-01
        • 2020-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多