Now images will be deleted too if the model gets deleted

This commit is contained in:
jitendra 2019-07-01 19:42:12 +05:30
parent b7d346260a
commit 318857b785
8 changed files with 80 additions and 19 deletions

View File

@ -0,0 +1,19 @@
<?php
namespace Webkul\Category\Observers;
use Illuminate\Support\Facades\Storage;
class CategoryObserver
{
/**
* Handle the Category "deleted" event.
*
* @param Category $category
* @return void
*/
public function deleted($category)
{
Storage::deleteDirectory('category/' . $category->id);
}
}

View File

@ -3,8 +3,8 @@
namespace Webkul\Category\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\AliasLoader;
use Illuminate\Routing\Router;
use Webkul\Category\Models\CategoryProxy;
use Webkul\Category\Observers\CategoryObserver;
class CategoryServiceProvider extends ServiceProvider
{
@ -13,9 +13,11 @@ class CategoryServiceProvider extends ServiceProvider
*
* @return void
*/
public function boot(Router $router)
public function boot()
{
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
CategoryProxy::observe(CategoryObserver::class);
}
/**

View File

@ -134,18 +134,14 @@ class SliderController extends Controller
{
$slider = $this->sliderRepository->findOrFail($id);
if ($this->sliderRepository->findWhere(['channel_id' => core()->getCurrentChannel()->id])->count() == 1) {
session()->flash('warning', trans('admin::app.settings.sliders.delete-success'));
} else {
try {
$this->sliderRepository->delete($id);
try {
$this->sliderRepository->delete($id);
session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Slider']));
session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Slider']));
return response()->json(['message' => true], 200);
} catch(\Exception $e) {
session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Slider']));
}
return response()->json(['message' => true], 200);
} catch(\Exception $e) {
session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Slider']));
}
return response()->json(['message' => false], 400);

View File

@ -0,0 +1,19 @@
<?php
namespace Webkul\Core\Observers;
use Illuminate\Support\Facades\Storage;
class SliderObserver
{
/**
* Handle the Slider "deleted" event.
*
* @param Slider $slider
* @return void
*/
public function deleted($slider)
{
Storage::delete($slider->path);
}
}

View File

@ -4,10 +4,11 @@ namespace Webkul\Core\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;
use Illuminate\Routing\Router;
use Illuminate\Foundation\AliasLoader;
use Webkul\Core\Core;
use Webkul\Core\Facades\Core as CoreFacade;
use Webkul\Core\Models\SliderProxy;
use Webkul\Core\Observers\SliderObserver;
class CoreServiceProvider extends ServiceProvider
{
@ -16,7 +17,7 @@ class CoreServiceProvider extends ServiceProvider
*
* @return void
*/
public function boot(Router $router)
public function boot()
{
include __DIR__ . '/../Http/helpers.php';
@ -33,6 +34,8 @@ class CoreServiceProvider extends ServiceProvider
$this->publishes([
dirname(__DIR__) . '/Config/concord.php' => config_path('concord.php'),
]);
SliderProxy::observe(SliderObserver::class);
}
/**

View File

@ -0,0 +1,19 @@
<?php
namespace Webkul\Product\Observers;
use Illuminate\Support\Facades\Storage;
class ProductObserver
{
/**
* Handle the Product "deleted" event.
*
* @param Product $product
* @return void
*/
public function deleted($product)
{
Storage::deleteDirectory('product/' . $product->id);
}
}

View File

@ -4,8 +4,8 @@ namespace Webkul\Product\Providers;
use Illuminate\Support\ServiceProvider;
use Webkul\Product\Providers\EventServiceProvider;
use Illuminate\Routing\Router;
use Webkul\Product\Models\Product;
use Webkul\Product\Models\ProductProxy;
use Webkul\Product\Observers\ProductObserver;
class ProductServiceProvider extends ServiceProvider
{
@ -14,7 +14,7 @@ class ProductServiceProvider extends ServiceProvider
*
* @return void
*/
public function boot(Router $router)
public function boot()
{
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
@ -23,6 +23,8 @@ class ProductServiceProvider extends ServiceProvider
$this->publishes([
dirname(__DIR__) . '/Config/imagecache.php' => config_path('imagecache.php'),
]);
ProductProxy::observe(ProductObserver::class);
}
/**

View File

@ -177,7 +177,8 @@ class ProductRepository extends Repository
}
if ($attribute->type == 'image' || $attribute->type == 'file') {
$dir = 'product';
$dir = 'product/' . $product->id;
if (gettype($data[$attribute->code]) == 'object') {
$data[$attribute->code] = request()->file($attribute->code)->store($dir);
} else {