éditer la quantité sans rediriger vers une autre page
-
13-12-2019 - |
Question
Nous avons un site de marché. Chaque vendeur / vendeur a son propre compte ....
Nous affichons la liste des vendeurs produits, Qté, SKU, prix ... etc. dans leur compte ...
Nous utilisons ce code pour afficher ces informations: http://pastebin.com/cvqkxz2r
Nous avons un bouton d'édition à côté de "Qté", si nous cliquons sur ce bouton d'édition, sa redirection à une autre page et que le vendeur modifier les informations et le sauvegarder.
Nous utilisons le code suivant pour éditer:
<img src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>" data-type="<?php echo $products->getTypeId(); ?>" alt="<?php echo $helper->__('Edit')?>" title="<?php echo $helper->__('Edit')?>" class="mp_edit"/>
Ce dont nous avons besoin, c'est si nous cliquons sur le bouton "Modifier", il doit afficher le champ de texte comme dans le bouton Image et mise à jour et d'annulation ci-dessous.
Question éditée :
J'utilise ce code pour ONCLICK Event sur l'image et appelez la fonction JavaScript:
<img onclick="updateField(this, '. $product_id .'); return false"; src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>"
fonction JavaScript que j'ai définie dans OnCliquez sur l'image.
<?php $url='Mage::getUrl('module_name/index/updateField/');' ?>
<script type="text/javascript">
function updateField(image, product_id)
{
new Ajax.Request('<?php echo $url ?>', {
method: 'post',
parameters: { id: fieldId, field: $(button).previous('input').getValue() }
});
}
</script>
Je fais la fonction dans le contrôleur que je définis dans Java Script Ajax URL.
public function updateFieldAction()
{
$fieldId = (int) $this->getRequest()->getParam('id');
$field = $this->getRequest()->getParam('field');
if ($fieldId) {
$model = Mage::getModel('modulename/model')->load($fieldId);
$model->setField($field);
$model->save();
}
}
Fichier de conception= http://pastebin.com/hhwrn1gk &
Fichier de contrôleur= http://pastebin.com/mbte2hcs
Mais je ne reçois pas de solution ....
La solution
Je ne suis pas sûr que cela fonctionnera pour vous ou non.Pour la zone de texte d'entrée sur Modifier, cliquez, vous devez modifier le code selon ci-dessous.
<!-- edit qty -->
<td>
<?php echo (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($products)->getQty(); ?>
<input type="text" id="qty_<?php echo $product_id;?>" name="qty" value="<?php echo (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($products)->getQty(); ?>" style="display:none"/>
<span class="label wk_action">
<img onclick="updateField('<?php echo $product_id; ?>');return false;" src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>"/>
</span>
</td>
<?php $url = Mage::getUrl('module_name/index/updateField/'); ?>
<script type = "text/javascript" >
var $wk_jq = jQuery.noConflict();
function updateField(product_id)
{
var qtyId = '#qty_'+product_id;
$wk_jq(qtyId).toggle()
$qty = $wk_jq(qtyId).val();
new Ajax.Request('<?php echo $url ?>', {
method: 'post',
parameters: {id: product_id, qty: $qty}
});
}
</script>
Je n'ai pas essayé, mais vous avez peut-être besoin de changer conformément à votre exigence et devrez également modifier le fichier de contrôleur.