我有一个Spree应用程序,支持spree-multi-domain扩展。在这里,他们是不同的商店,分配了不同的产品。(在管理员面板中)
对于STORE 1域而言, store1.example.com ,对于STORE 2 - > store2.example.com
这里我为多个商店设置了通配符子域
*.example.com
好的,现在,当我拨打example.com/api/products.json?token=MY_TOKEN_ID
时,
我获得了JSON格式的完整产品列表。但 在这里,我通过api调用检索商店1和商店2的产品时遇到问题。
当我将products.json称为
时存储1 store1.example.com/api/products.json?token=MY_TOKEN_ID
和
存储2 store2.example.com/api/products.json?token=MY_TOKEN_ID
然后我像往常一样example.com/api/products.json?token=MY_TOKEN_ID
我在这里期待的是,当我调用特定商店的产品的GET请求时,我应该获得在管理面板中分配的特定商店的产品。
那我该怎么办,无法理解。
请帮忙??
答案 0 :(得分:1)
spree-multi-gem并非100%稳定且仍处于开发阶段。
您需要覆盖API并为每个请求使用current_store。
新的ControllerHelpers :: Store关注提供了一个current_store帮助程序,用于根据请求的域获取帮助程序。
只是一个例子,与api无关
创建 /app/controllers/spree/taxons_controller_decorator.rb 并扩展TaxonsController。你需要class_eval它,否则你覆盖完整的类!!
Spree::TaxonsController.class_eval do
def show
@taxon = Spree::Taxon.find_by_store_id_and_permalink!(current_store.id, params[:id])
return unless @taxon
@searcher = build_searcher(params.merge(:taxon => @taxon.id))
@products = @searcher.retrieve_products
@taxonomies = get_taxonomies
end
end
因此,Spree :: TaxonsController中的所有其他函数保持不变,只显示show方法
所以对于你的情况:这是原始文件
https://github.com/spree/spree/blob/master/api/app/controllers/spree/api/v1/products_controller.rb
所以你需要进入你的rails应用程序,并在你去的地方有一个 /app/controllers/spree/api/v1/products_controller_decorator.rb (我认为有效)
Spree::Api::V1::ProductsController.class_eval do
end
但在阅读之后,我认为最好的想法是覆盖 https://github.com/spree/spree/blob/715d4439f4f02a1d75b8adac74b77dd445b61908/api/app/controllers/spree/api/base_controller.rb#L132
第132行product_scope
: - )
这应该对你有帮助 - 如果不是你最好去magento:P
欢呼声