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')) + + @endif + + + @if ($errors->any()) + @dump($errors) + @endif +