Quellcode durchsuchen

end create upload image in the product

Azam Rezayi vor 4 Jahren
Ursprung
Commit
7439b19bba

+ 4 - 3
app/Models/Upload.php

@@ -8,9 +8,10 @@ use Packages\Product\Models\Product;
 
 class Upload extends Model
 {
-    protected $fillable = ['name', 'path', 'mime_type', 'extension', 'uploadable_type', 'uploadable_id'];
-    public function products()
+//    protected $fillable = ['name', 'path', 'mime_type', 'extension', 'uploadable_type', 'uploadable_id'];
+protected $guarded = [] ;
+    public function uploadable()
     {
-        return $this->morphTo('Packages\Product\Models\Product', 'uploadable');
+        return $this->morphTo();
     }
 }

+ 0 - 33
database/migrations/2020_07_06_095717_create_uploadables_table.php

@@ -1,33 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateUploadablesTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('uploadables', function (Blueprint $table) {
-            $table->integer('upload_id');
-            $table->integer('uploadable_id');
-            $table->string('uploadable_type');
-            $table->timestamps();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('uploadables');
-    }
-}

+ 27 - 21
packages/product/src/Http/Controllers/ProductController.php

@@ -5,6 +5,8 @@ namespace Packages\Product\Http\Controllers;
 use App\Http\Controllers\Controller;
 use Facade\Ignition\Support\Packagist\Package;
 use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Facades\Facade;
+use Illuminate\Support\Facades\File;
 use Packages\Product\Http\Requests\ProductRequest;
 use Packages\Product\Models\Product;
 use Illuminate\Http\Request;
@@ -97,8 +99,11 @@ class ProductController extends Controller
     {
 
         $categories = Category::orderBy('id', 'DESC')->get();
-        $upload = upload::orderBy('id', 'DESC')->get();
-        return view('product::product.edit', compact('product', 'categories', 'upload'));
+        $uploads = Upload::orderBy('id', 'DESC')->get();
+
+
+
+        return view('product::product.edit', compact('product', 'categories', 'uploads'));
     }
 
 // *******************************************update page product*****************************************
@@ -121,17 +126,25 @@ class ProductController extends Controller
             'type' => $request->type,
             'status' => $request->status,
             'discription' => $request->discription,
-            'creator_id' => auth()->user()->id
-        ];
+            'creator_id' => auth()->user()->id,
 
-        $product->update($data);
+        ];
+        $product->save($data);
 
         $product->categories()->sync($request->categories);
+        if ($request->has('photo')) {
+            $file = $request->file('photo');
+            $diskName = 'product';
+            $this->uploader($file, $diskName, $product);
+
+        }
+
+
 
 
         $msg = 'ویرایش محصول با موفقیت انجام شد ';
-        dd($request->all());
-        return redirect(route('products.index'),compact('upload'))->with('success', $msg);
+
+        return redirect(route('products.index'))->with('success', $msg);
     }
 
     //***************************** delete products*****************************************
@@ -147,7 +160,9 @@ class ProductController extends Controller
 
     public function uploader($file, $diskName, $product)
     {
+
         $fileExtension = $file->getClientOriginalExtension();
+
         $fileMimeType = $file->getMimeType();
 
         $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate()->format('m');
@@ -156,7 +171,7 @@ class ProductController extends Controller
 
         $filePath = storage_path('app/public/' . $diskName . $afterDiskRoot . '/' . $fileName);
 
-        if (File_exists($filePath)) {
+        if (File::exists($filePath)) {
             $fileName = time() . '_' . $fileName;
         }
 
@@ -171,22 +186,13 @@ class ProductController extends Controller
 
         ];
 
+
         $uploaded = $product->uploads()->create($uploadData);
-        dd($uploaded);
+
+
 
     }
-//    public function serveFile(Request $request, $id)
-//    {
-//        $attachment = Upload::where('uploadable_type', 'Packages\Product\Models\Product')
-//            ->where('id', $id)
-//            ->firstOrFail();
-//
-//        if (!\Storage::disk('product')->exists($attachment->path))
-//            abort(404);
-//        $file_path = \Storage::disk('product')->getDriver()->getAdapter()->getPathPrefix() . $attachment->path;
-//
-//        return response()->file($file_path);
-//    }
+
 
 
 }

+ 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','file','image','max:2048'],
+           'photo' => ['required'],
 
         ];
 

+ 3 - 3
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()
     {
@@ -27,7 +27,7 @@ class Product extends Model
     }
     public function uploads()
     {
-        return $this->morphToMany(Upload::class, 'uploadable');
+        return $this->morphMany(Upload::class, 'uploadable');
     }
     public function getTypeAttribute($value)
     {

+ 1 - 12
packages/product/src/routes/web.php

@@ -11,28 +11,17 @@ Route::group([
     Route::resource('products','ProductController');
 ;
     Route::post('products/{product}', 'ProductController@index')->name('products.search');
-    Route::post('products/{path}', 'ProductController@serveFile')->name('products.serveFile');
 
 
 
 
-});
-
-
 
+});
 
 
 
 
 
-// class B {
-//     public function ss() {
-//         dd('Hello world!');
-//     }
-// }
 
 
-// $b = new B();
-// $b->ss();
 
-// Facades\B::ss();

+ 2 - 2
packages/product/src/views/product/create.blade.php

@@ -19,8 +19,8 @@
                 padding-top: 0 !important;
             }
 
-            select2 {
-                background-color: hsl(315, 22%, 86%);
+            .select2 {
+               width: 100% !important;
             }
             .photo{
                 border: 0px ;background-color: #fff;

+ 21 - 11
packages/product/src/views/product/edit.blade.php

@@ -14,9 +14,12 @@
             }
 
             .py-5 {
-                padding-top: 0 !important;}
-            .photo{
-                border: 0px ;background-color: #fff;
+                padding-top: 0 !important;
+            }
+
+            .photo {
+                border: 0px;
+                background-color: #fff;
             }
         </style>
     @endslot
@@ -134,7 +137,8 @@
                                                 name="status"
                                                 value="{{$product->status}}" required autocomplete="status">
                                             <option value="0">ناموجود</option>
-                                            <option value="1" @if ($product->status === 'موجود')  selected='selected'@endif>
+                                            <option value="1"
+                                                    @if ($product->status === 'موجود')  selected='selected'@endif>
                                                 موجود
                                             </option>
                                         </select>
@@ -166,7 +170,7 @@
                                                 autocomplete="categories[]" multiple>
                                             @foreach($categories as $cat)
                                                 <option value="{{$cat->id}}" <?php
-                                                    if (in_array($cat->id,$product->categories->pluck('id')->toArray())) echo 'selected'
+                                                    if (in_array($cat->id, $product->categories->pluck('id')->toArray())) echo 'selected'
                                                     ?>>{{$cat->title}}</option>
                                             @endforeach
                                         </select>
@@ -181,19 +185,25 @@
                                         <label for="title">{{ __('product.photo') }}</label><i
                                             class="required">&nbsp; *</i>
 
-{{--                                        @foreach($product->uploads as $upload_photo)--}}
-{{--                                            <a href="{{route('products.serveFile',[$id => $attachment->id])}}"></a>--}}
-{{--                                          <span>{{basename($upload_photo->path)}}</span>--}}
                                         <input type="file" name="photo" id="photo"
-
                                                class="form-control photo @error('photo') is-invalid  @enderror"
-                                               value="" autocomplete="photo" autofocus >
+                                               value="{{old('photo')}}" autocomplete="photo" autofocus>
                                         @error('photo')
                                         <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
                                         @enderror
-{{--                                        @endforeach--}}
+
+                                    </div>
+                                    <div class="row">
+
+                                        @foreach($product->uploads as $upload_photo)
+                                            <div class="col-md-2">
+                                                <img
+                                                    src="{{ \Illuminate\Support\Facades\Storage::disk('product')->url($upload_photo->path) }}"
+                                                    alt="">
+                                            </div>
+                                        @endforeach
                                     </div>
                                     <div class="form-group mb-0">
                                         <div class="">