Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
yii2_fecshop
提交
77d22aca
Y
yii2_fecshop
项目概览
OpenDocCN
/
yii2_fecshop
通知
17
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
yii2_fecshop
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
77d22aca
编写于
11月 30, 2016
作者:
R
root
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
购物车显示用户在产品页面勾选的颜色尺码等自定义属性,以及一些spu属性
上级
cbee0a91
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
78 addition
and
33 deletion
+78
-33
app/appfront/modules/Checkout/block/cart/Index.php
app/appfront/modules/Checkout/block/cart/Index.php
+50
-25
services/cart/QuoteItem.php
services/cart/QuoteItem.php
+28
-8
未找到文件。
app/appfront/modules/Checkout/block/cart/Index.php
浏览文件 @
77d22aca
...
...
@@ -30,44 +30,42 @@ class Index {
* ]
* 上面的products数组的个数如下:
* $products[] = [
* 'product_id' => $product_id ,
* 'qty' => $qty ,
* 'custom_option_sku' => $custom_option_sku ,
* 'product_price' => $product_price ,
* 'product_row_price' => $product_row_price ,
* 'product_name' => $one['name'],
* 'product_url' => $one['url_key'],
* 'product_image' => $one['image'],
* 'item_id' => $one['item_id'],
* 'product_id' => $product_id ,
* 'qty' => $qty ,
* 'custom_option_sku' => $custom_option_sku ,
* 'product_price' => $product_price ,
* 'product_row_price' => $product_row_price ,
* 'product_name' => $product_one['name'],
* 'product_url' => $product_one['url_key'],
* 'product_image' => $product_one['image'],
* 'custom_option' => $product_one['custom_option'],
* 'spu_options' => $productSpuOptions,
* ];
*/
public
function
getCartInfo
(){
$cart_info
=
Yii
::
$service
->
cart
->
getCartInfo
();
//var_dump($cart_info);
//exit;
if
(
isset
(
$cart_info
[
'products'
])
&&
is_array
(
$cart_info
[
'products'
])){
foreach
(
$cart_info
[
'products'
]
as
$k
=>
$product_one
){
# 设置名字,得到当前store的语言名字。
$cart_info
[
'products'
][
$k
][
'name'
]
=
Yii
::
$service
->
store
->
getStoreAttrVal
(
$product_one
[
'product_name'
],
'name'
);
# 设置图片
if
(
isset
(
$product_one
[
'product_image'
][
'main'
][
'image'
])){
$cart_info
[
'products'
][
$k
][
'image'
]
=
$product_one
[
'product_image'
][
'main'
][
'image'
];
}
# 产品的url
$cart_info
[
'products'
][
$k
][
'url'
]
=
Yii
::
$service
->
url
->
getUrl
(
$product_one
[
'product_url'
]);
$custom_option
=
isset
(
$product_one
[
'custom_option'
])
?
$product_one
[
'custom_option'
]
:
''
;
$custom_option_sku
=
$product_one
[
'custom_option_sku'
];
if
(
isset
(
$custom_option
[
$custom_option_sku
])
&&
!
empty
(
$custom_option
[
$custom_option_sku
])){
$custom_option_info
=
$custom_option
[
$custom_option_sku
];
$custom_option_info_arr
=
[];
foreach
(
$custom_option_info
as
$attr
=>
$val
){
if
(
!
in_array
(
$attr
,[
'qty'
,
'sku'
,
'price'
,
'image'
])){
$attr
=
str_replace
(
'_'
,
' '
,
$attr
);
$attr
=
ucfirst
(
$attr
);
$custom_option_info_arr
[
$attr
]
=
$val
;
}
}
$cart_info
[
'products'
][
$k
][
'custom_option_info'
]
=
$custom_option_info_arr
;
$custom_option_image
=
isset
(
$custom_option
[
$custom_option_sku
][
'image'
])
?
$custom_option
[
$custom_option_sku
][
'image'
]
:
''
;
if
(
$custom_option_image
){
$cart_info
[
'products'
][
$k
][
'image'
]
=
$custom_option_image
;
}
# 将在产品页面选择的颜色尺码等属性显示出来。
$custom_option_info_arr
=
$this
->
getProductOptions
(
$product_one
,
$custom_option_sku
);
$cart_info
[
'products'
][
$k
][
'custom_option_info'
]
=
$custom_option_info_arr
;
# 设置相应的custom option 对应的图片
$custom_option_image
=
isset
(
$custom_option
[
$custom_option_sku
][
'image'
])
?
$custom_option
[
$custom_option_sku
][
'image'
]
:
''
;
if
(
$custom_option_image
){
$cart_info
[
'products'
][
$k
][
'image'
]
=
$custom_option_image
;
}
}
}
...
...
@@ -75,6 +73,33 @@ class Index {
return
$cart_info
;
}
/**
* 将产品页面选择的颜色尺码等显示出来,包括custom option 和spu options部分的数据
*/
public
function
getProductOptions
(
$product_one
,
$custom_option_sku
){
$custom_option_info_arr
=
[];
$custom_option
=
isset
(
$product_one
[
'custom_option'
])
?
$product_one
[
'custom_option'
]
:
''
;
$custom_option_sku
=
$product_one
[
'custom_option_sku'
];
if
(
isset
(
$custom_option
[
$custom_option_sku
])
&&
!
empty
(
$custom_option
[
$custom_option_sku
])){
$custom_option_info
=
$custom_option
[
$custom_option_sku
];
foreach
(
$custom_option_info
as
$attr
=>
$val
){
if
(
!
in_array
(
$attr
,[
'qty'
,
'sku'
,
'price'
,
'image'
])){
$attr
=
str_replace
(
'_'
,
' '
,
$attr
);
$attr
=
ucfirst
(
$attr
);
$custom_option_info_arr
[
$attr
]
=
$val
;
}
}
}
$spu_options
=
$product_one
[
'spu_options'
];
if
(
is_array
(
$spu_options
)
&&
!
empty
(
$spu_options
)){
foreach
(
$spu_options
as
$label
=>
$val
){
$custom_option_info_arr
[
$label
]
=
$val
;
}
}
return
$custom_option_info_arr
;
}
public
function
initHead
(){
Yii
::
$app
->
view
->
registerMetaTag
([
...
...
services/cart/QuoteItem.php
浏览文件 @
77d22aca
...
...
@@ -121,16 +121,11 @@ class QuoteItem extends Service
$qty
=
$one
[
'qty'
];
$custom_option_sku
=
$one
[
'custom_option_sku'
];
$product_price
=
Yii
::
$service
->
product
->
price
->
getCartPriceByProductId
(
$product_id
,
$qty
,
$custom_option_sku
);
//var_dump($product_id);
//var_dump($qty);
//var_dump($custom_option_sku);
//echo "<br/>";
//var_dump($product_price);
$product_price
=
isset
(
$product_price
[
'value'
])
?
$product_price
[
'value'
]
:
0
;
$product_row_price
=
$product_price
*
$qty
;
//$product_row_price['code'] = $product_price['code'];
//$product_row_price['symbol'] = $product_price['symbol'];
$product_total
+=
$product_row_price
;
$productSpuOptions
=
$this
->
getProductSpuOptions
(
$product_one
);
$products
[]
=
[
'item_id'
=>
$one
[
'item_id'
],
'product_id'
=>
$product_id
,
...
...
@@ -142,10 +137,11 @@ class QuoteItem extends Service
'product_url'
=>
$product_one
[
'url_key'
],
'product_image'
=>
$product_one
[
'image'
],
'custom_option'
=>
$product_one
[
'custom_option'
],
'spu_options'
=>
$productSpuOptions
,
];
}
}
//var_dump($product_total);
//var_dump($product_total);
return
[
'products'
=>
$products
,
'product_total'
=>
$product_total
,
...
...
@@ -153,6 +149,30 @@ class QuoteItem extends Service
}
}
}
/**
* 得到产品的spu对应的属性以及值。
*/
protected
function
getProductSpuOptions
(
$productOb
){
$custom_option_info_arr
=
[];
if
(
isset
(
$productOb
[
'attr_group'
])
&&
!
empty
(
$productOb
[
'attr_group'
])){
$productAttrGroup
=
$productOb
[
'attr_group'
];
$attrInfo
=
Yii
::
$service
->
product
->
getGroupAttrInfo
(
$productAttrGroup
);
if
(
is_array
(
$attrInfo
)
&&
!
empty
(
$attrInfo
)){
$attrs
=
array_keys
(
$attrInfo
);
\
fecshop\models\mongodb\Product
::
addCustomProductAttrs
(
$attrs
);
}
$productOb
=
Yii
::
$service
->
product
->
getByPrimaryKey
(
$productOb
[
'_id'
]
->
{
'$id'
});
$spuArr
=
Yii
::
$service
->
product
->
getSpuAttr
(
$productAttrGroup
);
if
(
is_array
(
$spuArr
)
&&
!
empty
(
$spuArr
)){
foreach
(
$spuArr
as
$spu_attr
){
if
(
isset
(
$productOb
[
$spu_attr
])
&&
!
empty
(
$productOb
[
$spu_attr
])){
$custom_option_info_arr
[
$spu_attr
]
=
$productOb
[
$spu_attr
];
}
}
}
}
return
$custom_option_info_arr
;
}
public
function
addOneItem
(
$item_id
){
$cart_id
=
Yii
::
$service
->
cart
->
quote
->
getCartId
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录