如何将变量传递到模型侦听器

时间:2019-01-16 15:35:59

标签: laravel

关于此,我似乎找不到任何在线内容。我试图弄清楚如何将变量传递给模型的侦听器。

这是我要实现的目标:

Auth::user()->image()->create([], $image, $extension, config('app.profile_pictures_path'));

谢谢

编辑:

这是我的观察者:

public function creating(Image $image, $imageFile, $extension, $folder = null)
{
    $image->path = $folder . FileNameGenerator::getNewFilePath($extension); 
    //gets a unique random file name

    Storage::disk('s3')->put( $image->path, File::get($imageFile));

    return $image;
}

1 个答案:

答案 0 :(得分:0)

这是我想出的。我希望这被认为是不错的代码。

public static function saveImage( $model, $pluralModel, $image, $extension, $folder, array $attributes = null)
{
    $path = $folder . self::getNewFilePath($folder, $extension);
    Storage::disk('s3')->put( $path, File::get($image));

    $attributes['path'] = $path;
    $attributes['size_kb'] = self::getFileSizeKb($image);


    if($pluralModel){
        $model->images()->create($attributes);
    }else{
        if($model->image()->exists()) self::deleteFile($model->image);
        $model->image()->create($attributes);
    }

    return true;
}

public static function deleteFile($model)
{
    Storage::disk('s3')->delete($model->path);
    $model->delete();
}