프런트엔드에서 "특별 가격"을 편집하면 백엔드의 "가격" 필드에 저장됩니다.
-
13-12-2019 - |
문제
우리는 마켓플레이스[다중 공급업체] 사이트를 운영하고 있습니다.따라서 각 판매자 또는 공급업체 계정에 이름, SKU, 가격이 표시됩니다.등.판매자/판매자가 상품정보를 수정하고 저장할 수 있도록 합니다.그래서 백엔드에 반영됩니다....우리는 "가격"을 표시하기 위해 다음 코드를 사용하고 있습니다.같은 방식으로 특별 가격도 표시하고 싶습니다.내가 시도하고있는 것은 다음과 같은 코드 a) PHP 코드에서 나는 교체하고있다. <?php echo $products->getPrice(); ?>
~에 의해<?php echo $products->getSpecialPrice(); ?>
하지만
백엔드에 저장되지 않습니다.특별 가격으로 작동하려면 아래 코드에서 무엇을 변경해야 하는지 알려주세요.가격에 대한 코드입니다.
PHP
<span id="valueprice_<?php echo $products->getId(); ?>">
<?php echo $products->getPrice(); ?></span>
<input type = "text" id = "price_<?php echo $products->getId(); ?>" onkeydown="validateNumbers(event)" "name = "price" value = "<?php echo $products->getPrice(); ?>" style = "display:none"/>
<!-- aki 2 -->
<span class="label wk_action" id="edit_link_<?php echo $products->getId(); ?>">
<img onclick="showFieldPrice('<?php echo $products->getId(); ?>'); return false;" src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>"/>
</span>
<p id="updatedprice_<?php echo $products->getId(); ?>" style = "display:none;color:red;">Updated</p>
<br/>
<button id="price_update_button_<?php echo $products->getId(); ?>" class="button wk_mp_btn1" onclick="updateFieldPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
<span><span style="font-size:12px;"><?php echo $helper->__('Update') ?></span></span>
</button>
<button id="price_reset_button_<?php echo $products->getId(); ?>" type="reset" class="cancel" onclick="hideResetPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
<span><span><?php echo $helper->__('Cancel') ?></span></span>
</button>
</span>
자바스크립트
<script>
function showFieldPrice(product_id)
{
/*
var qtyId = '#qty_'+ product_id;
var editLink = "#edit_link_"+ product_id;
var updateButton = "#update_button_"+ product_id;
var resetButton = "#reset_button"+ product_id;
$wk_jq(qtyId).toggle()
$wk_jq(editLink).hide();
$wk_jq(updateButton).show();
$wk_jq(resetButton).show();
$qty = $wk_jq(qtyId).val();
*/
var qtyId='#price_'+ product_id;
var editLink="#price_edit_link_"+ product_id;
var updateButton="#price_update_button_"+ product_id;
var resetButton="#price_reset_button_"+ product_id;
$wk_jq(qtyId).show();
$wk_jq(editLink).hide();
$wk_jq(updateButton).show();
$wk_jq(updateButton).prop('disabled', false);//just in case
$wk_jq(resetButton).show();
return false;
}
</script>
컨트롤러.php
public function updateFieldPriceAction(){
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$id= $this->getRequest()->getParam('id');
$customerid=Mage::getSingleton('customer/session')->getCustomerId();
$collection_product = Mage::getModel('marketplace/product')->getCollection()->addFieldToFilter('mageproductid',array('eq'=>$id))->addFieldToFilter('userid',array('eq'=>$customerid));
//Mage::getSingleton('core/session')->setEditProductId($id);
try{
$upd_price = $this->getRequest()->getParam('special_price');
$product = Mage::getModel('catalog/product')->load($id);
//$product->setData('price', $upd_price);
$product->setPrice($upd_price);
//$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
//$stockItem->setData('manage_stock', 1);
//$stockItem->setData('qty', $this->getRequest()->getParam('qty'));
$product->save();
echo $price = $product->getPrice();
echo $name = $product->getName();
$response['message'] = 'Your Product Is Been Sucessfully Updated';
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));
//Mage::getSingleton('core/session')->addSuccess(Mage::helper('marketplace')->__('Your Product Is Been Sucessfully Updated'));
//endif;
}catch(Exception $e){
echo "Not Saving"; exit;
Mage::log($e->getMessage());
}
}
}
특별 가격으로 다음 코드를 사용하고 있습니다.
PHP
<span class="label pro_status">
<?php //echo $products->getSpecialPrice(); ?>
<span id="valueprice_<?php echo $products->getId(); ?>">
<?php echo $products->getSpecialPrice(); ?></span>
<input type = "text" id = "price_<?php echo $products->getId(); ?>" onkeydown="validateNumbers(event)" "name = "price" value = "<?php echo $products->getSpecialPrice(); ?>" style = "display:none"/>
<span class="label wk_action" id="edit_link_<?php echo $products->getId(); ?>">
<img onclick="showFieldPrice('<?php echo $products->getId(); ?>'); return false;" src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>"/>
</span>
<p id="updatedprice_<?php echo $products->getId(); ?>" style = "display:none;color:red;">Updated</p>
<br/>
<button id="price_update_button_<?php echo $products->getId(); ?>" class="button wk_mp_btn1" onclick="updateFieldSpecialPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
<span><span style="font-size:12px;"><?php echo $helper->__('Update') ?></span></span>
</button>
<button id="price_reset_button_<?php echo $products->getId(); ?>" type="reset" class="cancel" onclick="hideResetPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
<span><span><?php echo $helper->__('Cancel') ?></span></span>
</button>
</span>
JS
<script>
function updateFieldSpecialPrice(product_id)
{
var priceId = '#price_'+ product_id;
var valueId = '#valueprice_'+ product_id;
var updatedqty = '#updatedprice_'+ product_id;
var editLink = "#price_edit_link_"+ product_id;
var updateButton = "#price_update_button_"+ product_id;
var resetButton = "#price_reset_button"+ product_id;
var url ='<?php echo Mage::getUrl('marketplace/marketplaceaccount/updateFieldSpecialPrice/')?>';
$wk_jq(priceId).toggle()
$wk_jq(editLink).hide();
$wk_jq(updateButton).hide();
$wk_jq(resetButton).hide();
$price = $wk_jq(priceId).val();
jQuery(valueId).html($price);
hideReset(product_id);
new Ajax.Request(url, {
method: 'post',
parameters: {id: product_id, price: $price},
onComplete: function (transport) {
//alert(transport.responseText);
jQuery(updatedqty).show().delay(2000).fadeOut();
$updateButton.prop('disabled', false);
$wk_jq(priceId).setValue($price);
}
});
}
</script>
컨트롤러
public function updateFieldSpecialPriceAction(){
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$id= $this->getRequest()->getParam('id');
$customerid=Mage::getSingleton('customer/session')->getCustomerId();
$collection_product = Mage::getModel('marketplace/product')->getCollection()->addFieldToFilter('mageproductid',array('eq'=>$id))->addFieldToFilter('userid',array('eq'=>$customerid));
//Mage::getSingleton('core/session')->setEditProductId($id);
try{
$upd_price = $this->getRequest()->getParam('price');
$product = Mage::getModel('catalog/product')->load($id);
//$product->setData('price', $upd_price);
$product->setSpecialPrice($upd_price);
//$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
//$stockItem->setData('manage_stock', 1);
//$stockItem->setData('qty', $this->getRequest()->getParam('qty'));
$product->save();
echo $price = $product->getPrice();
echo $name = $product->getName();
$response['message'] = 'Your Product Is Been Sucessfully Updated';
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));
//Mage::getSingleton('core/session')->addSuccess(Mage::helper('marketplace')->__('Your Product Is Been Sucessfully Updated'));
//endif;
}catch(Exception $e){
echo "Not Saving"; exit;
Mage::log($e->getMessage());
}
}
해결책
Controller의 $product->setPrice($upd_price);
로 $product->setSpecialPrice($upd_price);
를 대체
제휴하지 않습니다 magento.stackexchange