ソースを参照

edit button delete file product and edit page create and edit

Azam Rezayi 4 年 前
コミット
b41267761a

+ 2 - 0
app/Models/Upload.php

@@ -3,11 +3,13 @@
 namespace App\Models;
 
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 use Packages\Product\Models\Product;
 
 
 class Upload extends Model
 {
+    use SoftDeletes;
 //    protected $fillable = ['name', 'path', 'mime_type', 'extension', 'uploadable_type', 'uploadable_id'];
 protected $guarded = [] ;
     public function uploadable()

+ 1 - 0
database/migrations/2020_07_05_045648_create_uploads_table.php

@@ -21,6 +21,7 @@ class CreateUploadsTable extends Migration
             $table->string('mime_type');
             $table->morphs('uploadable');
             $table->timestamps();
+            $table->softDeletes();
         });
     }
 

+ 10 - 16
packages/product/src/Http/Controllers/ProductController.php

@@ -9,7 +9,6 @@ use Illuminate\Support\Facades\Facade;
 use Illuminate\Support\Facades\File;
 use Illuminate\Support\Facades\Storage;
 use Packages\Product\Http\Requests\ProductRequest;
-use Packages\Product\Http\Requests\ProductRequestEdat;
 use Packages\Product\Http\Requests\ProductRequestEdit;
 use Packages\Product\Models\Product;
 use Illuminate\Http\Request;
@@ -18,6 +17,7 @@ use App\Models\Upload;
 use phpDocumentor\Reflection\Types\Compound;
 
 
+
 class ProductController extends Controller
 {
     public function __construct()
@@ -98,14 +98,13 @@ class ProductController extends Controller
 
     // ******************************************************edit page product*********************************************
 
-    public function edit( Product $product)
+    public function edit(Product $product)
     {
 
         $categories = Category::orderBy('id', 'DESC')->get();
         $uploads = Upload::orderBy('id', 'DESC')->get();
 
 
-
         return view('product::product.edit', compact('product', 'categories', 'uploads'));
     }
 
@@ -141,11 +140,6 @@ class ProductController extends Controller
             $this->uploader($file, $diskName, $product);
 
         }
-        Storage::delete(
-            $file
-        );
-
-
 
 
         $msg = 'ویرایش محصول با موفقیت انجام شد ';
@@ -163,10 +157,11 @@ class ProductController extends Controller
             return back();
         }
     }
-
+//****************upload images in the product************************
     public function uploader($file, $diskName, $product)
     {
 
+
         $fileExtension = $file->getClientOriginalExtension();
 
         $fileMimeType = $file->getMimeType();
@@ -196,15 +191,14 @@ class ProductController extends Controller
         $uploaded = $product->uploads()->create($uploadData);
 
 
-
     }
-
-    public function destroyFile($id)
+//************************delete image in th product**********************
+    public function destroyFile(Upload $upload)
     {
-$delete = File:: find($id);
-Storage::delete($delete->path);
-$delete->detete();
-return redirect('product::product.edit');
+        $upload->delete();
+        $msg = 'حذف عکس محصول با موفقیت انجام شد ';
+        session()->flash('image_deleted',$msg);
+        return redirect()->back();
     }
 
 

+ 1 - 1
packages/product/src/Http/Requests/ProductRequest.php

@@ -31,7 +31,7 @@ class ProductRequest extends FormRequest
             'status' => ['required'],
             'discription' => ['required'],
             'categories' => ['required'],
-           'photo' => ['required'],
+           'photo' => ['required', 'image', 'mimes:jpeg,jpg,png,gif', 'max:8000'],
 
         ];
 

+ 2 - 2
packages/product/src/Models/Product.php

@@ -12,8 +12,8 @@ class Product extends Model
 {
     use SoftDeletes;
 
-//    protected $fillable = ['title', 'discription', 'price', 'creator_id', 'type', 'status', 'sale_price', 'sku', 'slug', 'photo'];
-    protected $guarded = [];
+   protected $fillable = ['title', 'discription', 'price', 'creator_id', 'type', 'status', 'sale_price', 'sku', 'slug', 'photo'];
+//    protected $guarded = [];
 
     public function user()
     {

+ 2 - 2
packages/product/src/routes/web.php

@@ -10,8 +10,8 @@ Route::group([
 
     Route::resource('products','ProductController');
 ;
-//    Route::post('products/{product}', 'ProductController@index')->name('products.search');
-    Route::post('products/uploads/{id}', 'ProductController@destroyFile')->name('uploads.destroyFile');
+
+    Route::get('uploads/{upload}', 'ProductController@destroyFile')->name('uploads.destroyFile');
 
 
 

+ 91 - 83
packages/product/src/views/product/create.blade.php

@@ -20,10 +20,12 @@
             }
 
             .select2 {
-               width: 100% !important;
+                width: 100% !important;
             }
-            .photo{
-                border: 0px ;background-color: #fff;
+
+            .photo {
+                border: 0px;
+                background-color: #fff;
             }
         </style>
     @endslot
@@ -39,13 +41,14 @@
         <div class="auth-background h-auto py-5">
             <div class="container py-5">
                 <div class="row align-items-center ">
-                    <div class="col-lg-11 col-md-11 mx-auto">
+                    <div class="col-lg-12 col-md-12 mx-auto">
                         <div class="card">
                             <div class="card-header"><strong>{{ __('ثبت محصول جدید') }}</strong></div>
                             @component('product::components.message')
                             @endcomponent
                             <div class="card-body mx-lg-5 px-lg-3">
-                                <form method="POST" action="{{ route('products.store') }}" enctype="multipart/form-data">
+                                <form method="POST" action="{{ route('products.store') }}"
+                                      enctype="multipart/form-data">
                                     @csrf
 
                                     <div class="form-group">
@@ -60,95 +63,100 @@
                                             <strong>{{ $message }}</strong>
                                         </span>
                                         @enderror
-
-                                    </div>
-
-                                    <div class="form-group">
-                                        <label for="title">{{ __('product.slug') }}</label>
-                                        <input type="text" name="slug"
-                                               class="form-control @error('slug') is-invalid  @enderror"
-                                               value="{{old('slug')}}" autocomplete="slug" autofocus>
-                                        @error('slug')
-                                        <div class="alert alert-danger">{{$message}}</div>
-                                        @enderror
                                     </div>
-                                    <div class="form-group">
-                                        <label for="sku">{{ __('product.sku') }}</label>
-                                        <input id="sku" type="text"
-                                               class="form-control @error('sku') is-invalid @enderror" name="sku"
-                                               autocomplete="sku" value="{{ old('sku') }}" autofocus>
-
-                                        @error('sku')
-                                        <span class="invalid-feedback" role="alert">
+                                    <div class="form-row ">
+                                        <div class="form-group col-lg-4">
+                                            <label for="slug">{{ __('product.slug') }}</label>
+                                            <input type="text" name="slug"
+                                                   class="form-control @error('slug') is-invalid  @enderror"
+                                                   value="{{old('slug')}}" autocomplete="slug" autofocus>
+                                            @error('slug')
+                                            <div class="alert alert-danger">{{$message}}</div>
+                                            @enderror
+                                        </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="sku">{{ __('product.sku') }}</label>
+                                            <input id="sku" type="text"
+                                                   class="form-control @error('sku') is-invalid @enderror" name="sku"
+                                                   autocomplete="sku" value="{{ old('sku') }}" autofocus>
+
+                                            @error('sku')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
-                                    </div>
-                                    <div class="form-group">
-                                        <label for="title">{{ __('product.price') }}</label><i class="required">&nbsp;
-                                            *</i>
-                                        <input id="input.price" type="text"
-                                               class="form-control price @error('price') is-invalid @enderror"
-                                               name="price"
-                                               value="{{ old('price') }}" autocomplete="price" autofocus>
-
-                                        @error('price')
-                                        <span class="invalid-feedback" role="alert">
+                                            @enderror
+                                        </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="type">{{ __('product.type') }}</label></label><i
+                                                class="required">&nbsp;
+                                                *</i>
+                                            <select id="type" type="text"
+                                                    class="form-control @error('type') is-invalid @enderror" name="type"
+                                                    value="{{ old('type') }}" autocomplete="type">
+                                                <option value="">انتخاب کنید</option>
+                                                <option value="0" {{ (old('type') == '0') ? 'selected' : '' }}>ساده
+                                                </option>
+                                                <option value="1" {{ (old('type') == '1') ? 'selected' : '' }}>متغیر
+                                                </option>
+                                                <option value="2" {{ (old('type') == '2') ? 'selected' : '' }}>باندل
+                                                </option>
+                                            </select>
+
+                                            @error('type')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
-
+                                            @enderror
+                                        </div>
                                     </div>
-
-                                    <div class="form-group">
-                                        <label for="sale_price">@lang('product.sale_price')</label>
-                                        <input id="sale_price" type="text"
-                                               class="form-control price @error('sale_price') is-invalid @enderror"
-                                               name="sale_price"
-                                               value="{{ old('sale_price') }}" autocomplete="sale_price" autofocus>
-
-                                        @error('sale_price')
-                                        <span class="invalid-feedback" role="alert">
+                                    <div class="form-row ">
+                                        <div class="form-group col-lg-4">
+                                            <label for="title">{{ __('product.price') }}</label><i class="required">&nbsp;
+                                                *</i>
+                                            <input id="input.price" type="text"
+                                                   class="form-control price @error('price') is-invalid @enderror"
+                                                   name="price"
+                                                   value="{{ old('price') }}" autocomplete="price" autofocus>
+
+                                            @error('price')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
-                                    </div>
-
-                                    <div class="form-group">
-                                        <label for="type">{{ __('product.type') }}</label></label><i class="required">&nbsp;
-                                            *</i>
-                                        <select id="type" type="text"
-                                                class="form-control @error('type') is-invalid @enderror" name="type"
-                                                value="{{ old('type') }}" autocomplete="type">
-                                            <option value="">انتخاب کنید</option>
-                                            <option value="0"  {{ (old('type') == '0') ? 'selected' : '' }}>ساده</option>
-                                            <option value="1"  {{ (old('type') == '1') ? 'selected' : '' }}>متغیر</option>
-                                            <option value="2"  {{ (old('type') == '2') ? 'selected' : '' }}>باندل</option>
-                                        </select>
-
-                                        @error('type')
-                                        <span class="invalid-feedback" role="alert">
+                                            @enderror
+                                        </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="sale_price">@lang('product.sale_price')</label>
+                                            <input id="sale_price" type="text"
+                                                   class="form-control price @error('sale_price') is-invalid @enderror"
+                                                   name="sale_price"
+                                                   value="{{ old('sale_price') }}" autocomplete="sale_price" autofocus>
+
+                                            @error('sale_price')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
-                                    </div>
-
-                                    <div class="form-group">
-                                        <label for="status">{{ __('product.status') }}</label><i class="required">&nbsp;
-                                            *</i>
-                                        <select id="status" type="text"
-                                                class="form-control  @error('status') is-invalid @enderror"
-                                                name="status"
-                                                 autocomplete="status">
-                                            <option value="">انتخاب کنید</option>
-                                            <option value="1" {{ (old('status') == '1') ? 'selected' : '' }}>موجود</option>
-                                            <option value="0" {{ (old('status') == '0') ? 'selected' : '' }}>ناموجود</option>
-                                        </select>
-                                        @error('status')
-                                        <span class="invalid-feedback" role="alert">
+                                            @enderror
+                                        </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="status">{{ __('product.status') }}</label><i class="required">&nbsp;
+                                                *</i>
+                                            <select id="status" type="text"
+                                                    class="form-control  @error('status') is-invalid @enderror"
+                                                    name="status"
+                                                    autocomplete="status">
+                                                <option value="">انتخاب کنید</option>
+                                                <option value="1" {{ (old('status') == '1') ? 'selected' : '' }}>موجود
+                                                </option>
+                                                <option value="0" {{ (old('status') == '0') ? 'selected' : '' }}>
+                                                    ناموجود
+                                                </option>
+                                            </select>
+                                            @error('status')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
+                                            @enderror
+                                        </div>
                                     </div>
                                     <div class="form-group">
                                         <label for="discription">{{ __('product.discription') }}</label></label><i
@@ -191,7 +199,7 @@
                                         <input type="file" name="photo" id="photo"
 
                                                class="form-control photo @error('photo') is-invalid  @enderror"
-                                               value="{{old('photo')}}" autocomplete="photo" autofocus >
+                                               value="{{old('photo')}}" autocomplete="photo" autofocus multiple>
                                         @error('photo')
                                         <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>

+ 124 - 97
packages/product/src/views/product/edit.blade.php

@@ -1,4 +1,4 @@
-@component('panel.layouts.component', ['title' => 'ویرایش محصول جدید'])
+@component('panel.layouts.component', ['title' => 'ویرایش محصول '])
     @slot('style')
         <style>
             .card-header {
@@ -21,11 +21,17 @@
                 border: 0px;
                 background-color: #fff;
             }
-           #holder{
-                margin:15px;
-               height:150px;
-               width: 150px;
 
+            #holder {
+                margin: 15px;
+                height: 150px;
+                width: 150px;
+
+            }
+
+            .btn_photo {
+                margin-bottom: -50px;
+                position: relative;
             }
         </style>
     @endslot
@@ -41,12 +47,19 @@
             <div class="container py-5">
                 @component('product::components.message')
                 @endcomponent
+                @if(session()->has('image_deleted'))
+                    <div class="alert alert-dismissible alert-success">
+                        <button class="close" type="button" data-dismiss="alert">×</button>
+                        {{session('image_deleted')}}
+                    </div>
+                @endif
                 <div class="row align-items-center">
                     <div class="col-lg-12 col-md-12 mx-auto">
                         <div class="card">
-                            <div class="card-header"><strong>{{ __('ویرایش محصول جدید') }}</strong></div>
+                            <div class="card-header"><strong>{{ __('ویرایش محصول ') }}</strong></div>
                             <div class="card-body mx-lg-5 px-lg-3">
-                                <form method="POST" action="{{ route('products.update',$product->id) }}" enctype="multipart/form-data">
+                                <form method="POST" action="{{ route('products.update',$product->id) }}"
+                                      enctype="multipart/form-data">
                                     @csrf
                                     @if ($product)
                                         @method('PUT')
@@ -64,95 +77,104 @@
                                         </span>
                                         @enderror
                                     </div>
-                                    <div class="form-group">
-                                        <label for="slug">  {{ __('product.slug') }}</label>
-                                        <input id="slug" type="text"
-                                               class="form-control @error('slug') is-invalid @enderror"
-                                               name="slug" value="{{$product->slug}}"
-                                               autocomplete="slug" autofocus>
-                                        @error('slug')
-                                        <span class="invalid-feedback" role="alert">
-                                            <strong>{{ $message }}</strong>
-                                        </span>
-                                        @enderror
-                                    </div>
-                                    <div class="form-group">
-                                        <label for="sku">  {{ __('product.sku') }}</label>
-                                        <input id="sku" type="text"
-                                               class="form-control @error('sku') is-invalid @enderror"
-                                               name="sku" value="{{$product->sku}}"
-                                               autocomplete="sku" autofocus>
-                                        @error('sku')
-                                        <span class="invalid-feedback" role="alert">
+                                    <div class="form-row ">
+                                        <div class="form-group col-lg-4">
+                                            <label for="slug">  {{ __('product.slug') }}</label>
+                                            <input id="slug" type="text"
+                                                   class="form-control @error('slug') is-invalid @enderror"
+                                                   name="slug" value="{{$product->slug}}"
+                                                   autocomplete="slug" autofocus>
+                                            @error('slug')
+                                            <span class="invalid-feedback" role="alert">
+                                              <strong>{{ $message }}</strong>
+                                            </span>
+                                            @enderror
+                                        </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="sku">  {{ __('product.sku') }}</label>
+                                            <input id="sku" type="text"
+                                                   class="form-control @error('sku') is-invalid @enderror"
+                                                   name="sku" value="{{$product->sku}}"
+                                                   autocomplete="sku" autofocus>
+                                            @error('sku')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
-                                    </div>
-                                    <div class="form-group">
-                                        <label for="price">  {{ __('product.price') }}</label><i class="required">&nbsp;
-                                            *</i>
-                                        <input id="price" type="text"
-                                               class="form-control price @error('price') is-invalid @enderror"
-                                               name="price"
-                                               value="{{$product->price}}" autocomplete="price" autofocus>
-                                        @error('price')
-                                        <span class="invalid-feedback" role="alert">
+                                            @enderror
+                                        </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="type">{{ __('product.type') }}</label><i class="required">&nbsp;
+                                                *</i>
+                                            <select id="type" type="text"
+                                                    class="form-control @error('type') is-invalid @enderror" name="type"
+                                                    autocomplete="type">
+                                                <option value="0"
+                                                        @if($product->type==='ساده') selected='selected' @endif>
+                                                    ساده
+                                                </option>
+                                                <option value="1"
+                                                        @if($product->type==='متغیر') selected='selected' @endif>
+                                                    متغیر
+                                                </option>
+                                                <option value="2"
+                                                        @if($product->type==='باندل') selected='selected' @endif>
+                                                    باندل
+                                                </option>
+                                            </select>
+                                            @error('type')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
+                                            @enderror
+                                        </div>
                                     </div>
-                                    <div class="form-group">
-                                        <label for="sale_price">{{ __('product.sale_price') }}</label>
-                                        <input id="sale_price" type="text"
-                                               class="form-control price @error('sale_price') is-invalid @enderror"
-                                               name="sale_price"
-                                               value="{{$product->sale_price}}" autocomplete="sale_price">
-                                        @error('sale_price')
-                                        <span class="invalid-feedback" role="alert">
+                                    <div class="form-row ">
+                                        <div class="form-group col-lg-4">
+                                            <label for="price">  {{ __('product.price') }}</label><i class="required">&nbsp;
+                                                *</i>
+                                            <input id="price" type="text"
+                                                   class="form-control price @error('price') is-invalid @enderror"
+                                                   name="price"
+                                                   value="{{$product->price}}" autocomplete="price" autofocus>
+                                            @error('price')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
-                                    </div>
-                                    <div class="form-group">
-                                        <label for="type">{{ __('product.type') }}</label><i class="required">&nbsp;
-                                            *</i>
-                                        <select id="type" type="text"
-                                                class="form-control @error('type') is-invalid @enderror" name="type"
-                                                autocomplete="type">
-                                            <option value="0" @if($product->type==='ساده') selected='selected' @endif>
-                                                ساده
-                                            </option>
-                                            <option value="1" @if($product->type==='متغیر') selected='selected' @endif>
-                                                متغیر
-                                            </option>
-                                            <option value="2" @if($product->type==='باندل') selected='selected' @endif>
-                                                باندل
-                                            </option>
-                                        </select>
-                                        @error('type')
-                                        <span class="invalid-feedback" role="alert">
+                                            @enderror
+                                        </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="sale_price">{{ __('product.sale_price') }}</label>
+                                            <input id="sale_price" type="text"
+                                                   class="form-control price @error('sale_price') is-invalid @enderror"
+                                                   name="sale_price"
+                                                   value="{{$product->sale_price}}" autocomplete="sale_price">
+                                            @error('sale_price')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
-                                    </div>
-                                    <div class="form-group">
-                                        <label for="status">{{ __('product.status') }}</label></label><i
-                                            class="required">&nbsp; *</i>
-                                        <select id="status" type="text"
-                                                class="form-control @error('status') is-invalid @enderror"
-                                                name="status"
-                                                value="{{$product->status}}" required autocomplete="status">
-                                            <option value="0">ناموجود</option>
-                                            <option value="1"
-                                                    @if ($product->status === 'موجود')  selected='selected'@endif>
-                                                موجود
-                                            </option>
-                                        </select>
-                                        @error('status')
-                                        <span class="invalid-feedback" role="alert">
+                                            @enderror
+                                        </div>
+
+
+                                        <div class="form-group col-lg-4">
+                                            <label for="status">{{ __('product.status') }}</label></label><i
+                                                class="required">&nbsp; *</i>
+                                            <select id="status" type="text"
+                                                    class="form-control @error('status') is-invalid @enderror"
+                                                    name="status"
+                                                    value="{{$product->status}}" required autocomplete="status">
+                                                <option value="0">ناموجود</option>
+                                                <option value="1"
+                                                        @if ($product->status === 'موجود')  selected='selected'@endif>
+                                                    موجود
+                                                </option>
+                                            </select>
+                                            @error('status')
+                                            <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
-                                        @enderror
+                                            @enderror
+                                        </div>
                                     </div>
                                     <div class="form-group">
                                         <label for="discription">{{ __('product.discription') }}</label><i
@@ -193,7 +215,7 @@
 
                                         <input type="file" name="photo" id="photo"
                                                class="form-control photo @error('photo') is-invalid  @enderror"
-                                               value="{{old('photo')}}" autocomplete="photo" autofocus>
+                                               value="{{old('photo')}}" autocomplete="photo" autofocus multiple>
                                         @error('photo')
                                         <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
@@ -205,19 +227,16 @@
 
                                         @foreach($product->uploads as $upload_photo)
                                             <div class="col-md-2">
-                                                <form
-                                                    action="{{route('uploads.destroyFile', $upload_photo->id)}}"
-                                                    method="POST"
-                                                    onsubmit="return confirm('آیا مطمئن هستید؟');">
-                                                    @csrf
-                                                    @method('DELETE')
-                                                    <button type="submit" class="btn btn-sm btn-danger"><i class="icon fa fa-close"></i></button>
-                                                </form>
 
+                                                <a class="btn btn-sm btn-danger btn_photo"
+                                                   href="{{route('uploads.destroyFile', $upload_photo->id)}}">
+                                                    <i
+                                                        class="icon fa fa-close"></i>
+                                                </a>
 
-                                                        <img id="holder" class="img-thumbnail" name="image"
-                                                             src="{{ \Illuminate\Support\Facades\Storage::disk('product')->url($upload_photo->path) }}"
-                                                             alt="">
+                                                <img id="holder" class="img-thumbnail"
+                                                     src="{{ \Illuminate\Support\Facades\Storage::disk('product')->url($upload_photo->path) }}"
+                                                     alt="">
 
                                             </div>
                                         @endforeach
@@ -244,3 +263,11 @@
     @slot('script')
     @endslot
 @endcomponent
+
+
+
+
+
+
+
+