la modification du « prix spécial » depuis le frontend est enregistrée dans le champ « Prix » dans le backend
-
13-12-2019 - |
Question
nous avons un site de marché [multi-fournisseurs].ainsi, dans chaque compte vendeur ou fournisseur, nous affichons le nom, le sku, le prix....etc.afin que les vendeurs/fournisseurs puissent modifier les informations sur le produit et les enregistrer.donc cela se reflétera dans le backend....nous utilisons le code suivant pour afficher "Prix".de la même manière, je souhaite également afficher un prix spécial.Pour cela, ce que j'essaie est dans le code suivant a) Dans le code PHP, je remplace <?php echo $products->getPrice(); ?>
par<?php echo $products->getSpecialPrice(); ?>
mais
ce n'est pas sauvegardé dans le backend.veuillez indiquer les modifications que je dois apporter dans le code ci-dessous pour fonctionner à un prix spécial.C'est le code pour le prix.
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>
Javascript
<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>
contrôleur.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());
}
}
}
pour un prix spécial, j'utilise le code suivant :
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>
contrôleurs
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());
}
}
La solution
remplacer $product->setPrice($upd_price);
avec $product->setSpecialPrice($upd_price);
dans les contrôleurs