我正在开发一个电子商务应用程序,当用户将产品添加到购物车并继续结帐时,我无法弄清楚如何更新产品库存数量。我正在使用phpnuke,这就是我在Cartscontroller上的内容:
<?php
class CartsController extends AppController {
var $uses = array('Cart', 'Product', 'Coupon', 'User');
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('totalcart', 'deletecart', 'viewcart', 'cart', 'checkcoupon', 'checkout', 'metodocheckout', 'fatturazione', 'metodospedizione', 'informazionispedizione', 'pagamento', 'confermaordine');
}
function checkout() {
$this->set("title_for_layout", "Checkout Ordine ");
$user_id = $this->Auth->User('id') ? $this->Auth->User('id') : $this->Session->id();
$total = $this->Cart->find('count', array('conditions' => array('Cart.user_id' => $user_id, 'Product.active' => true)));
if ($total == 0)
$this->redirect(array('controller' => 'pages', 'action' => 'index'));
$itemElencoCarrello = $this->Cart->find('all', array(
'conditions' => array('Cart.user_id' => $user_id),
'contain' => array(
'Product' => array(
'Image',
'fields' => array('Product.id', 'Product.codice', 'Product.slug', 'Product.nome', 'Product.prezzo', ($this->isPrivato || $this->isAzienda) ? 'Product.prezzo_speciale' : 'Product.prezzo_rivenditori as prezzo_speciale'),
'conditions' => array('Product.active' => true)
)
)
));
$this->set('listaProdottiCart', $itemElencoCarrello);
$this->set('idUtente', $user_id);
$this->set('tipoUtente', !empty($this->tipo_utente) ? $this->tipo_utente : "PRIVATO");
$this->totale_ordine();
}
function totalcart() {
if ($this->RequestHandler->isAjax()) {
$this->totale_ordine();
}
}
function totale_ordine() {
$user_id = $this->Auth->User('id') ? $this->Auth->User('id') : $this->Session->id();
$prezzo = ($this->isPrivato || $this->isAzienda) ? 'Product.prezzo_speciale' : 'Product.prezzo_rivenditori';
$total = $this->Cart->find('all', array(
'fields' => array('SUM(' . $prezzo . ' * Cart.qta) AS ctotal'),
'conditions' => array('Cart.user_id' => $user_id, 'Product.active' => true)
));
$subTotale = $total[0][0]['ctotal'];
if ($this->Session->check('codiceCoupon')) {
$codiceCoupon = $this->Session->read('codiceCoupon');
$subTotale -= intval($codiceCoupon['Coupon']['valore']);
$this->set('valoreCoupon', $codiceCoupon['Coupon']['valore']);
$this->set('codiceCoupon', $codiceCoupon['Coupon']['codice']);
}
if (($iva = Cache::read('iva')) === false) {
$iva = $this->getOption('iva');
Cache::write('iva', $iva);
}
$this->set('iva', Cache::read('iva'));
if ($this->isPrivato || $this->isAzienda) {
// Iva da scorporare al totale
$totaleSenzaIva = $subTotale / (1 + ($iva / 100));
$ivaFinale = $subTotale - $totaleSenzaIva;
$this->set('subTotale', $totaleSenzaIva);
$this->set('totale_iva', $ivaFinale);
$this->set('totaleComplessivo', $subTotale);
$totalePerMinimo = $totaleSenzaIva;
} else if ($this->isRivenditore) {
// Iva da aggiungere
$ivaFinale = ($subTotale * $iva) / 100;
$totaleIvato = $subTotale + $ivaFinale;
$this->set('subTotale', $subTotale);
$this->set('totale_iva', $ivaFinale);
$this->set('totaleComplessivo', $totaleIvato);
$totalePerMinimo = $subTotale;
}
if (!$this->RequestHandler->isAjax() && !empty($this->tipo_utente)) {
// Verifica Minimo di Ordine:
$keyMinimoOrdineAccount = "minimo-" . strtolower($this->tipo_utente);
if (($minimo = Cache::read($keyMinimoOrdineAccount)) === false) {
$minimo = $this->getOption($keyMinimoOrdineAccount);
Cache::write($keyMinimoOrdineAccount, $minimo);
}
$minimo = Cache::read($keyMinimoOrdineAccount);
if (!empty($minimo) && $totalePerMinimo < $minimo) {
$this->Session->setFlash(__('Attenzione, il totale del carrello deve avere un ordine minimo di: ' . CakeNumber::currency($minimo, 'EUR'), true), 'alert-box', array('class' => 'error-msg'));
$this->redirect(array('controller' => 'pages', 'action' => 'index'));
}
}
}
function viewcart() {
$this->set("title_for_layout", "Carrello Utente | Tuttoinchiostro");
if (!empty($this->data)) {
if ($this->Cart->saveAll($this->data['Cart'])) {
$this->Session->setFlash(__('Carrello aggiornato correttamente', true), 'alert-box', array('class' => 'success-msg'));
} else {
$this->Session->setFlash(__('Errore durante l\'operazione, riprovare ', true), 'alert-box', array('class' => 'error-msg'));
}
}
$user_id = $this->Auth->User('id') ? $this->Auth->User('id') : $this->Session->id();
$itemElencoCarrello = $this->Cart->find('all', array(
'conditions' => array('Cart.user_id' => $user_id),
'contain' => array(
'Product' => array(
'Image',
'fields' => array('Product.id', 'Product.slug', 'Product.codice', 'Product.nome', 'Product.prezzo', ($this->isPrivato || $this->isAzienda) ? 'Product.prezzo_speciale' : 'Product.prezzo_rivenditori as prezzo_speciale'),
'conditions' => array('Product.active' => true)
)
)
));
$this->set('listaProdottiCart', $itemElencoCarrello);
if ($this->Session->check('codiceCoupon')) {
$codiceCoupon = $this->Session->read('codiceCoupon');
$this->set('codiceCoupon', $codiceCoupon['Coupon']['codice']);
}
}
function deletecart($action = null) {
$this->autoRender = $this->layout = false;
$user_id = $this->Auth->User('id') ? $this->Auth->User('id') : $this->Session->id();
if ($this->RequestHandler->isAjax()) {
if (!empty($this->data)) {
$idCarrelloSelezionato = intval($this->request->data['idCarrelloSelezionato']);
if ($idCarrelloSelezionato != null && is_numeric($idCarrelloSelezionato)) {
$item = $this->Cart->read(null, $idCarrelloSelezionato);
if (!empty($item)) {
$this->Cart->delete($idCarrelloSelezionato);
}
}
}
$itemElencoCarrello = $this->Cart->find('count', array(
'conditions' => array('Cart.user_id' => $user_id, 'Product.active' => true)
));
echo json_encode(array(
"numprodotti" => $itemElencoCarrello
));
exit;
}
if (!empty($action) && $action == "all") {
if ($this->Cart->deleteAll(array('Cart.user_id' => $user_id), false)) {
$this->Session->setFlash(__('Tutti i prodotti sono stati eliminati dal carrello, continua i tuoi acquisti', true), 'alert-box', array('class' => 'success-msg'));
} else {
$this->Session->setFlash(__('Errore durante l\'operazione. Riprova', true), 'alert-box', array('class' => 'error-msg'));
}
$this->redirect(array('controller' => 'pages', 'action' => 'index'));
}
}
function cart() {
if ($this->RequestHandler->isAjax()) {
$user_id = $this->Auth->User('id') ? $this->Auth->User('id') : $this->Session->id();
if (!empty($this->data)) {
$idProdottoSelezionato = intval($this->request->data['idProdottoSelezionato']);
$qta = intval($this->request->data['quantita']);
$this->Product->id = $idProdottoSelezionato;
if (!$this->Product->exists()) {
throw new NotFoundException(__('Prodotto Non valido'));
} else {
$itemCart = $this->Cart->find('first', array(
'conditions' => array('product_id' => $idProdottoSelezionato, 'user_id' => $user_id)));
$this->Cart->id = !(empty($itemCart)) ? $itemCart['Cart']['id'] : null;
$this->Cart->set(array(
'user_id' => $user_id,
'product_id' => $idProdottoSelezionato,
'qta' => (!(empty($itemCart)) ? $itemCart['Cart']['qta'] : 0) + $qta
));
$this->Cart->save();
}
}
$this->set("countCarrello", $this->Cart->find('count', array(
'conditions' => array('Cart.user_id' => $user_id, 'Product.active' => true))));
$prezzo = ($this->isPrivato || $this->isAzienda) ? 'Product.prezzo_speciale' : 'Product.prezzo_rivenditori';
$prezzo_finale = $this->Cart->find('all', array(
'fields' => array('SUM(Cart.qta * ' . $prezzo . ') as prezzo_finale'),
'conditions' => array('Cart.user_id' => $user_id, 'Product.active' => true)));
$this->set("prezzoFinale", $prezzo_finale[0][0]['prezzo_finale']);
}
}
function checkcoupon() {
if ($this->RequestHandler->isAjax()) {
if (!empty($this->data)) {
$codiceCoupon = $this->request->data['coupon'];
$item = $this->Coupon->find('first', array(
'conditions' => array('codice' => $codiceCoupon)));
if ($this->Session->check('codiceCoupon'))
$this->Session->delete('codiceCoupon');
if (!empty($item) && intval($item['Coupon']['valore']) > 0) {
$this->Session->write('codiceCoupon', $item);
}
echo json_encode(array(
"valore" => (!empty($item) ? $item['Coupon']['valore'] : 0)
));
exit;
}
}
}
}
问题是,我如何更新产品数据库的数量?
答案 0 :(得分:0)
在函数cart()中,数量var在这里:
$qta = intval($this->request->data['quantita']);