diff --git a/beike/Admin/Http/Controllers/ProductController.php b/beike/Admin/Http/Controllers/ProductController.php
index be357049..77617904 100644
--- a/beike/Admin/Http/Controllers/ProductController.php
+++ b/beike/Admin/Http/Controllers/ProductController.php
@@ -2,6 +2,7 @@
namespace Beike\Admin\Http\Controllers;
+use Beike\Admin\Http\Requests\ProductRequest;
use Beike\Models\Product;
use Illuminate\Http\Request;
use Beike\Repositories\ProductRepo;
@@ -57,9 +58,14 @@ class ProductController extends Controller
return $this->form($request, new Product());
}
- public function store(Request $request)
+ public function store(ProductRequest $request)
{
- return $this->save($request, new Product());
+ try {
+ (new ProductService)->create($request->all());
+ return redirect()->to($this->getRedirect())->with('success', trans('common.created_success'));
+ } catch (\Exception $e) {
+ return redirect(admin_route('product.create'))->withErrors(['error' => $e->getMessage()]);
+ }
}
public function edit(Request $request, Product $product)
@@ -67,16 +73,20 @@ class ProductController extends Controller
return $this->form($request, $product);
}
- public function update(Request $request, Product $product)
+ public function update(ProductRequest $request, Product $product)
{
- return $this->save($request, $product);
+ try {
+ (new ProductService)->update($product, $request->all());
+ return redirect()->to($this->getRedirect())->with('success', trans('common.updated_success'));
+ } catch (\Exception $e) {
+ return redirect(admin_route('product.edit', $product))->withErrors(['error' => $e->getMessage()]);
+ }
}
public function destroy(Request $request, Product $product)
{
$product->delete();
-
- return ['success' => true];
+ return json_success(trans('common.deleted_success'));
}
public function restore(Request $request)
@@ -110,17 +120,6 @@ class ProductController extends Controller
return view('admin::pages.products.form.form', $data);
}
- protected function save(Request $request, Product $product)
- {
- if ($product->id) {
- $product = (new ProductService)->update($product, $request->all());
- } else {
- $product = (new ProductService)->create($request->all());
- }
-
- return redirect($this->getRedirect())->with('success', 'product created');
- }
-
public function name(int $id)
{
$name = ProductRepo::getName($id);
diff --git a/beike/Admin/Http/Requests/ProductRequest.php b/beike/Admin/Http/Requests/ProductRequest.php
new file mode 100644
index 00000000..895d52bd
--- /dev/null
+++ b/beike/Admin/Http/Requests/ProductRequest.php
@@ -0,0 +1,43 @@
+
+ * @created 2022-08-19 21:58:20
+ * @modified 2022-08-19 21:58:20
+ */
+
+namespace Beike\Admin\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class ProductRequest extends FormRequest
+{
+ /**
+ * Determine if the user is authorized to make this request.
+ *
+ * @return bool
+ */
+ public function authorize(): bool
+ {
+ return true;
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules(): array
+ {
+ return [
+ 'descriptions.*.name' => 'required|string|min:3|max:32',
+ // 'descriptions.*.description' => 'required|string',
+ 'brand_id' => 'int',
+ 'sku' => 'required|string',
+ 'price' => 'required|float',
+ ];
+ }
+}
diff --git a/resources/beike/admin/views/pages/products/form/form.blade.php b/resources/beike/admin/views/pages/products/form/form.blade.php
index 6709fabd..11528f26 100644
--- a/resources/beike/admin/views/pages/products/form/form.blade.php
+++ b/resources/beike/admin/views/pages/products/form/form.blade.php
@@ -12,6 +12,15 @@
@section('content')
+ @if ($errors->has('error'))
+