![](/img/trans.png)
[英]how do I get product data when adding to cart and listening for the “checkout_cart_product_add_after” event
[英]after adding the product in the cart and the user refreshes the page then how can I display the data which is added in the cart
我正在使用CodeIgniter購物車。 我正在顯示類似的記錄
第1行
AFGFD ANAND
trdsd@gmail.com
ActivityName | duration | price | Action
cricket | Select duration | 100 | Add to cart
第2行
POIUY ANAND
mnbsd@gmail.com
ActivityName | duration | price | Action
cricket | Select duration | 100 | Add to cart
Badminton | Select duration | 200 | Add to cart
注意持續時間是一個選擇下拉列表,它在下面
<select name="memberDuration" class="form-control dropdownDuration">
<option selected disabled >Select duration</option>
<option value="12m">1 Year</option>
<option value="6m">6 months</option>
</select>
下面是最終的代碼。 添加到購物車也沒有問題。 用戶最多只能添加一個產品。
foreach ($SActivity as $sec_data) {
$counter = 0; // COUNTER FOR KNOWING POSITION IN ACTIVITIES LOOP $num_activities = count($sec_data); // TOTAL NUMBER OF ACTIVITIES FOR THIS USER
foreach ($sec_data as $row) { $counter++; // ADD +1 TO COUNTER FOR EACH
ACTIVITY // ONLY PRINT OUT THE NAME AND TABLE HEADER IF FIRST ROW if($counter == 1){ ?>
<h2>
<?php echo $row->first_name;?>
<?php echo $row->last_name;?>
</h2>
<p>
<?php echo $row->email;?>
</p>
<table>
<thead>
<tr>
<th>ActivityName</th>
<th>duration</th>
<th>price</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php } ?>
<tr>
<td>
<?php echo $row->ActivityName;?>
</td>
<td>
<select name="memberDuration" class="form-control dropdownDuration">
<option selected disabled>Select duration</option>
<option value="12m">1 Year</option>
<option value="6m">6 months</option>
</select>
</td>
<td>
<div class="calActivitylPrice"></div>
</td>
<td>
<div class="display_table">
<?php echo $secActivity_Addtocart_active;?>
</div>
</td>
</tr>
<?php
// IF THIS IS THE LAST ACTIVITY OF THIS USER IN THE LOOP: PRINT TABLE END TAG
if($counter == $num_activities){
echo '</tbody></table>';
}
}
}
添加產品的示例。
POIUY ANAND
mnbsd@gmail.com
ActivityName | duration | price | Action
cricket | 12m | 100 | remove
Badminton | 6m | 200 | remove
到現在為止沒有問題。
現在,我注意到我在購物車中添加了產品,刷新頁面,然后選擇下拉列表,並且價格未顯示。
我的意思是我添加了一個期限為1 year
的產品,並且根據下拉列表,我使用ajax顯示價格。
在將產品添加到購物車並刷新頁面后,我得到
POIUY ANAND
mnbsd@gmail.com
ActivityName | duration | price | Action
cricket | Select duration | | remove
Badminton | Select duration | | remove
因此,我試圖找到一種解決方案,在將產品添加到購物車中之后,用戶刷新頁面,然后如何顯示數據。
我找到了解決方案,它正在工作。 但問題是我的選擇下拉列表顯示在所有選擇選項中,而價格未顯示在正確的活動中。
我得到的輸出像。 我從第一行選擇下拉列表中選擇1年,它顯示在所有行中
Row 1
AFGFD ANAND
trdsd@gmail.com
ActivityName | duration | price | Action
cricket | 12m | 100 | remove
Row 2
POIUY ANAND
mnbsd@gmail.com
ActivityName | duration | price | Action
cricket | 12m | 200 | remove
Badminton | 12m | | remove
<tr>
<td>
<?php echo $row->ActivityName;?>
</td>
<td>
<?php
$product['options']['duration']=0;
if (in_array($activityNO, array_column($this->cart->contents(), 'id'))){
foreach ($this->cart->contents() as $product) {
//break;
} }?>
<select name="memberDuration" class="form-control dropdownDuration">
<option selected disabled >Select duration</option>
<option value="12m" <?php if($product['options']['duration'] == "12m"){ echo 'selected="selected"';} ?> >1 Year</option>
<option value="6m" <?php if($product['options']['duration'] == "6m"){ echo 'selected="selected"';} ?>>6 months</option>
</select>
</td>
<td>
<div class="calActivitylPrice">
<?php if (in_array($activityNO, array_column($this->cart->contents(), 'id'))){
foreach ($this->cart->contents() as $product) {
if ($product['id'] == $activityNO) {
//print_r($product['price']);
$priceAct = $product['price'];
}
//
}
print_r($priceAct);
}
?>
</div>
</td>
<td>
<div class="display_table">
<?php echo $Addtocart_active;?>
</div>
</td>
</tr>
$ this-> cart-> contents()的值
Array
(
[dc54c1ce61893fa725cf87c9e20b4c78] => Array
(
[id] => 1
[name] => cricket
[qty] => 1
[price] => 100
[options] => Array
(
[duration => 12m
)
[rowid] => dc54c1ce61893fa725cf87c9e20b4c78
)
[e5966e762beda1762e461f27f1dc3ef4] => Array
(
[id] => 2
[name] => Badminton
[qty] => 1
[price] => 200
[options] => Array
(
[duration] => 6m
)
[rowid] => e5966e762beda1762e461f27f1dc3ef4
)
)
根據更新進行更新
在這個街區
foreach ($this->cart->contents() as $product) {
您在添加的購物車中檢查了$ activityNO,這可能是正確的,但是在foreach循環中,您沒有從購物車內容中獲得正確的$ activityNO值。
而且,您的解決方案不好,您正在使用許多foreach。
要對其進行優化,只需循環一次並准備好日期然后進行渲染即可。
<?php
$productsInCart = [];
// Loop and prepare data similar to below
foreach ($this->cart->contents() as $cart) {
$productsInCart[$cart['id']] = $cart;
}
?>
<?php
foreach ($sec_data as $row) {
$activityNo = $row->activityNo; // I am not sure about this
?>
<h2>
<?php echo $row->first_name;?>
<?php echo $row->last_name;?>
</h2>
<select name="memberDuration" class="form-control dropdownDuration">
<option <?php if (empty($productsInCart[$activityNo])) { echo 'selected="selected"';} ?> disabled >Select duration</option>
<option value="12m" <?php if($productsInCart[$activityNo]['options']['duration'] == "12m"){ echo 'selected="selected"';} ?> >1 Year</option>
<option value="6m" <?php if($productsInCart[$activityNo]['options']['duration'] == "6m"){ echo 'selected="selected"';} ?>>6 months</option>
</select>
<?php
} // END foreach
?>
並以低於價格的價格應用相同的策略。
注意:上面的代碼僅是個主意,並非100%有效。
為此,您需要使用以下建議解決方案之一,具體取決於您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.