Laravel Voyager BREAD 图像编辑和删除问题

Laravel Voyager BREAD Image Edit and Delete Issue

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

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

并检查这个

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

第 403 行的函数。

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

希望对你有帮助

Voyager 1.2class文件
[=Laravel中不再有public function deleteBreadImages($data, $rows) {...}
12=]

经过两天谷歌搜索同一问题后,我找到了硬性解决方案...
在我的例子中,图像字段名称是 img,型号名称是 Company
在模型 BREAD 更新

时执行代码

适用于 航海者 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);

                }
            }
        });
    }
}