'required|string|max:255|unique:order__order_item,server_name', 'product_id' => 'required|integer', 'product_type' => 'required|integer', 'months' => 'required|integer', 'cart_id' => 'required|integer|exists:carts,id', 'os_id' => 'required|integer|exists:os,id', 'addons' => 'nullable|array', 'addons.*.qty' => 'nullable|integer|min:0', 'addons.*.price' => 'nullable|integer|min:0', 'totalPrice' => 'required|integer|min:0', ]; } public function messages(): array { return [ 'server_name.required' => 'Vui lòng bổ sung thêm tên miền!', 'server_name.string' => 'Tên miền phải là chuỗi ký tự.', 'server_name.max' => 'Tên miền không được vượt quá 255 ký tự.', 'server_name.unique' => 'Tên miền này đã được sử dụng, vui lòng chọn tên khác.', 'product_type.required' => 'Loại sản phẩm là bắt buộc.', 'product_type.integer' => 'Loại sản phẩm phải là số nguyên.', 'os_id.required' => 'Vui lòng chọn hệ điều hành!', 'os_id.integer' => 'Hệ điều hành phải là số nguyên.', 'os_id.exists' => 'Hệ điều hành không tồn tại.', 'addons.*.qty.min' => 'Số lượng addon phải lớn hơn hoặc bằng 0.', 'addons.*.price.min' => 'Giá addon phải lớn hơn hoặc bằng 0.', 'cart_id.required' => 'Mã giỏ hàng là bắt buộc', 'totalPrice.required' => 'Tổng giá là bắt buộc.', 'totalPrice.integer' => 'Tổng giá phải là số nguyên.', 'totalPrice.min' => 'Tổng giá phải lớn hơn hoặc bằng 0.', ]; } }