diff --git a/app/Helpers.php b/app/Helpers.php index a4abe2da..77ca57ba 100644 --- a/app/Helpers.php +++ b/app/Helpers.php @@ -1,2 +1,16 @@ '中文简体', + 'code' => 'zh_cn', + ]; + $locales[] = [ + 'name' => 'English', + 'code' => 'en', + ]; + + return $locales; +} diff --git a/app/Http/Controllers/Admin/ProductsController.php b/app/Http/Controllers/Admin/ProductsController.php index d7ea1f68..b1ed44bc 100644 --- a/app/Http/Controllers/Admin/ProductsController.php +++ b/app/Http/Controllers/Admin/ProductsController.php @@ -13,6 +13,7 @@ class ProductsController extends Controller public function index() { $products = Product::query() + ->with('description') ->withCount('skus') ->paginate(); diff --git a/app/Http/Controllers/Shop/CartsController.php b/app/Http/Controllers/Shop/CartsController.php new file mode 100644 index 00000000..2317479b --- /dev/null +++ b/app/Http/Controllers/Shop/CartsController.php @@ -0,0 +1,16 @@ +quantity ?? 1; + dd($sku); + } +} diff --git a/app/Http/Controllers/Shop/ProductsController.php b/app/Http/Controllers/Shop/ProductsController.php index adfda7e6..7c244f75 100644 --- a/app/Http/Controllers/Shop/ProductsController.php +++ b/app/Http/Controllers/Shop/ProductsController.php @@ -10,7 +10,12 @@ class ProductsController extends Controller { public function show(Request $request, Product $product) { - $product->load('skus'); - dd($product); + $product->load('description', 'skus'); + + $data = [ + 'product' => $product, + ]; + + return view('product', $data); } } diff --git a/app/Models/Product.php b/app/Models/Product.php index e1e43679..8fbc0c47 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -11,6 +11,16 @@ class Product extends Model protected $fillable = ['image', 'video', 'position', 'active', 'variables']; + public function description() + { + return $this->hasOne(ProductDescription::class)->where('locale', 'zh_cn'); + } + + public function descriptions() + { + return $this->hasMany(ProductDescription::class); + } + public function skus() { return $this->hasMany(ProductSku::class); diff --git a/app/Models/ProductDescription.php b/app/Models/ProductDescription.php new file mode 100644 index 00000000..5b6d45a4 --- /dev/null +++ b/app/Models/ProductDescription.php @@ -0,0 +1,13 @@ +fill($data); $product->saveOrFail(); - $skus = []; - foreach ($data['skus'] as $index => $rawSku) { - $skus[] = $rawSku; - } - if ($isUpdating) { $product->skus()->delete(); + $product->description()->delete(); + } + + $descriptions = []; + foreach ($data['descriptions'] as $locale => $description) { + $description['locale'] = $locale; + $description['content'] = $description['content'] ?? ''; + + $descriptions[] = $description; + } + $product->descriptions()->createMany($descriptions); + + $skus = []; + foreach ($data['skus'] as $index => $sku) { + $sku->position = $index; + $skus[] = $sku; } $product->skus()->createMany($skus); diff --git a/database/migrations/2021_12_26_111435_create_tables.php b/database/migrations/2021_12_26_111435_create_tables.php index c2869adc..742a8ca7 100644 --- a/database/migrations/2021_12_26_111435_create_tables.php +++ b/database/migrations/2021_12_26_111435_create_tables.php @@ -24,6 +24,18 @@ class CreateTables extends Migration $table->softDeletes(); }); + Schema::create('product_descriptions', function (Blueprint $table) { + $table->id()->startingValue(100_000); + $table->unsignedBigInteger('product_id'); + $table->string('locale'); + $table->string('name'); + $table->text('content'); + $table->string('meta_title')->default(''); + $table->string('meta_description')->default(''); + $table->string('meta_keyword')->default(''); + $table->timestamps(); + }); + Schema::create('product_skus', function (Blueprint $table) { $table->id()->startingValue(100_000); $table->unsignedBigInteger('product_id'); @@ -49,6 +61,7 @@ class CreateTables extends Migration public function down() { Schema::dropIfExists('products'); + Schema::dropIfExists('product_descriptions'); Schema::dropIfExists('product_skus'); } } diff --git a/resources/views/admin/pages/products/form/form.blade.php b/resources/views/admin/pages/products/form/form.blade.php index 8d7c02d0..370a4ce7 100644 --- a/resources/views/admin/pages/products/form/form.blade.php +++ b/resources/views/admin/pages/products/form/form.blade.php @@ -10,11 +10,18 @@ @csrf @method(($product ?? null) ? 'PUT' : 'POST') - - - - - +
{{ $product->description->name }}
+ ++ model: {{ $sku->model }} + price: {{ $sku->price }} + Add to cart +
+ @endforeach + +