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

时间:2017-12-16 20:32:04

标签: laravel voyager

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

2 个答案:

答案 0 :(得分:0)

嘿,请检查项目的vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php目录

中的以下文件

并检查此

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

第403行的功能。

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

我希望这可以帮助你

答案 1 :(得分:0)

Laravel Voyager 1.2 类文件
public function deleteBreadImages($data, $rows) {...}

中不再有vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php

在搜索了同一天的问题两天后,我想出了硬性解决方案...
在我的情况下,图片字段名称为 img ,型号名称为公司
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);

                }
            }
        });
    }
}