AsgardCMS的商店模块

安装: 69

依赖项: 0

建议者: 0

安全: 0

类型:asgard-module

1.0.1 2018-08-20 12:25 UTC

This package is auto-updated.

Last update: 2024-09-21 02:10:03 UTC


README

  • 您需要在config/app.php数组中添加一些内容

    'aliases' => [
    	// ...
    	'Image' => Intervention\Image\Facades\Image::class,
    	// ...
    ],
    
    'providers' => [
    	// ...
    	Intervention\Image\ImageServiceProvider::class,
    	Spatie\Sitemap\SitemapServiceProvider::class,
    	Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class
    	// ...
    ]
    

设置

翻译客户数据字段

  • 如果您使用不寻常的键(例如客户的卡号)存储用户数据或需要将键翻译为不寻常的语言,则模块无法翻译键并将它们保留为英文。
  • 如果您想以自己的格式显示它们,只需在您的应用程序中创建一个字典,并将路径设置为客户数据字典设置属性。
  • 模块将始终尝试使用您的字典来翻译键,然后再使用它自己的。

产品渲染

  • 产品路由、控制器方法和视图的示例可在\Modules\Shop\Http\frontendRoutes.php\Modules\Shop\Http\Controllers\Frontend\ProductsController.php\Modules\Shop\Resources\views\frontend\product(s).blade.php中找到

购物车操作和订单提交 - 使用模块的JS控制器

  • 您可以通过模块的JS控制器轻松地操作购物车内容和提交订单

包含JS控制器

  • @include("shop::frontend.partials.cart-ajax", [ "omit" => [ ] ])添加到页面底部(在jQuery加载后)
  • 您可以通过omit参数自定义您想使用的控制器方法
  • omit值是
    • cart-addcart-updatecart-removecart-destroy
    • cart(所有购物车方法的快捷键)
    • order-customer-dataorder-delivery-dataorder-submit
    • order(所有订单方法的快捷键)
  • 您可以将它们以任何组合添加到数组中

购物车内容操作

添加产品

  • 您只需将data-add-to-cart-id="{{ $product->id }}"属性添加到您的链接,控制器将处理其余部分

删除产品

  • 当遍历购物车内容时,将data-remove-from-cart-id="{{ $item->rowId }}"属性添加到删除链接(其中$item是购物车行实例)

更新项目数量

  • 当遍历购物车内容时,将data-previous-value="{{ $item->qty }}"data-change-quantity-id="{{ $item->rowId }}"属性添加到您的输入(其中$item是购物车行实例)
  • 控制器将监听输入的变化,并在值变化时更新产品数量
  • 注意:在更新输入和删除按钮的最近<tr>上需要data-row-id="{{ $item->rowId }}"属性,以便在更改后成功更新DOM

销毁购物车

  • 只需将空data-destroy-cart属性添加到您的链接即可

订单数据

创建输入

  • 一旦您的输入就绪,请将data-order-customer-field-namedata-order-delivery-field-name属性与您希望使用的字段名添加到每个输入中
  • 输入值将在表单提交时自动收集

验证输入

  • 要验证您的输入,请将data-order-rule属性添加到它们
  • 支持的属性值是emailphonenumberfilledbool或您的自定义正则表达式
  • 在提交表单之前进行验证 - 当验证失败时,将has-error类添加到输入框的父元素

根据国家/运输方式值进行运输/支付方式筛选

  • 在您的购物车中,您最想做的事情可能是根据选择的运输方式显示/隐藏支付方式,以及类似地根据选择的国家和运输方式
  • 要完成此操作,请按照以下简单说明进行
    • 为每个选择框添加一个空选项,例如:<option value="" data-filter-values="">选择运输方式</option>
    • data-order-delivery-field-name属性添加到您的选择框中,对于国家选择框使用"country"值,对于运输方式选择框使用"shipping"值,对于支付方式选择框使用"payment"
    • data-filter-values添加到国家和运输方式选择框中,用逗号分隔支持的运输/支付方式的ID
      • 这可以通过以下方式完成:data-filter-values="{{ implode(",", $country->shippingMethodsIds) }}"data-filter-values="{{ implode(",", $shipping->paymentsIds) }}"
    • 接下来,确保每个选择框中的选项的value与选项的ID相同
  • 就是这样!您的选择框现在将自动隐藏/显示选项

提交数据表单

  • 您只需将data-submit-order-customer-datadata-submit-order-delivery-data添加到您的按钮中 - 控制器将在点击时验证并提交表单

提交订单

  • 要提交整个订单,只需将data-submit-order属性添加到您的按钮中 - 就这么简单!

事件监听器

  • 您可以将自己的回调函数添加到在请求状态改变时被调用的函数中
  • 回调函数对象可以通过window.shop.on.{request name}.{event name}对象访问
  • 可用请求名称
    • request用于所有请求
    • addRequestupdateRequestremoveRequestdestroyRequest用于购物车请求
    • customerDataRequestdeliveryDataRequestsubmitOrderRequest用于订单请求
  • 所有请求都支持startenddonefail事件,requestcustomerDataRequestdeliveryDataRequest还支持validationDonevalidationFail事件
  • 某些事件有默认方法可供使用,无需编码
  • 有关详细信息,请参阅shop::frontend.partials.cart-ajax.blade.php

自定义警告

  • 大多数请求在结束时调用警告函数
  • 您可以通过替换window.shop.alert(string, type)函数来自定义警告

加载元素

  • 默认情况下,请求在开始/结束时切换$(".loading")元素的可见性
  • 您可以通过替换window.shop.loadinElement属性来自定义此元素,将其替换为您的自定义jQuery对象

购物车数量/价格更改

  • 每次更改购物车内容时,您可能希望更新您网站上某处的价格/产品数量
  • 在您想要插入数量/价格的位置使用属性data-cart-insert="items"data-cart-insert="price",控制器将在每次更改购物车内容时自动替换它们的内容

价格格式化和筛选选择值

  • 如果您需要在应用程序的任何地方将数字格式化为价格,请使用PHP辅助函数{{ price($number) }}或JavaScript函数window.shop.price(number) - 小数位数、分隔符和货币可以在模块设置中设置,请参阅README中的Settings部分
  • 如果您需要根据不同选择框的值筛选选择框的选项(请参阅README中的Order data > Shipping/payment methods filtering based on country/shipping method value),您可以使用JS函数window.shop.filterSelectValues(sourceSelect, targetSelect, sourceKeyAttribute?, targetKeyAttribute?, delimiter?)
    • 只需调用一次,该方法将监听选择框的变化并自动切换选项
    • 有关函数参数的更多信息,请参阅\Modules\Shop\Resources\views\frontend\partials\cart-ajax.blade.php:151

示例视图

  • 要查看示例路由、控制器和视图,请前往\Modules\Shop\Http\frontendRoutes.php\Modules\Shop\Http\Controllers\Frontend\CartController.php\Modules\Shop\Resources\views\frontend,其中包含功能齐全的商店原型

购物车操作(不带JS控制器)

  • 要操作购物车内容,您可以使用外观类 Modules\Shop\Facades\Cart 或 AJAX API。

AJAX API

  • API 可在 POST shop-api/cart/(action) 路径下访问,其中 (action)insertupdateremovedestroy
  • 传入的属性与外观类中的方法参数相同(见下文)

PHP 外观类

  • 您可以通过 Modules\Shop\Facades\Cart 调用静态方法来操作购物车内容
  • 有关更多文档,请参阅 Modules\Shop\Facades\Cart.php

订单提交(无 JS 控制器)

  • 外观类 Modules\Shop\Facades\Order 和相应的 AJAX API 可帮助您处理订单

存储用户和配送数据

  • 当您有多页购物车时,Shop 模块可以存储您的用户数据和配送数据,因此您不需要手动操作
  • 这可以通过外观类的 storeUserDatastoreDeliveryData 方法或 api.shop.order.store user dataapi.shop.order.store delivery dataapi.shop.order.store order data API 路径来实现。
  • 一旦设置数据,您可以通过 getStoredUserDatagetStoredDeliveryData 方法检索它

提交订单

  • 提交订单通过 submitOrder 方法或 api.shop.order.submit API 路径完成
  • 在此处,您可以提交您的用户、配送和产品数据,但如果您使用购物车并存储用户和配送数据,则不需要传递任何数据,所有数据将自动从购物车和存储数据中获取。