Sei sulla pagina 1di 6

5/11/2015

ClaseCart:GuadelUsuariodeCodeIgniter

GuadelUsuariodeCodeIgniterVersin2.1.4
CodeIgniterGuadelUsuarioShoppingCart
Class

TabladeContenido
BuscarenlaGuadelUsuario
Go

ClaseCart
LaClaseCartpermitequelostemsseagreguenalasesinquepermaneceactiva
mientrasunusuarioestnavegandosusitio.Estostemssepuederecuperary
mostrarenunformatoestndarde"carritodecompras",permitindolealusuario
actualizaroquitartemsdelcarrito.
PorfavoradviertaquelaClaseCartSOLAMENTEproveefuncionalidadde"carrito".
Noproveefuncionalidadesdeenvo,autorizacindetarjetadecrditouotro
procesamientoadicional.

InicializarlaClaseCart
Importante:LaClaseCartusalaClaseSessiondeCodeIgniterparaguardarla
informacindelcarritoenlabasededatos,porlotanto,antesdeusarlaClaseCart
tienequeestablecerunatabladebasededatoscomoseindicaenla
documentacindelaClaseSessionyestablecerlaspreferenciasdelasesinensu
archivoapplication/config/config.phpparautilizarunabasededatos.
ParainicializarlaClaseCartensucontrolador,uselafuncin$this>load
>library:
$this>load>library('cart')

Unavezcargada,elobjetoCartestardisponibleusando:$this>cart.
Nota:LaClaseCartcargareinicializaralaClaseSessionautomticamente,por
loqueamenosqueestusandosesionesenotrapartedesuaplicacin,no
necesitacargarlaClaseSession.

AgregaruntemalCarrito
Paraagregaruntemalcarrito,simplementepaseunarrayconlainformacindel
productoalafuncin$this>cart>insert(),segnsemuestraaqu:
$data=array(
'id'=>'sku_123ABC',
'qty'=>1,
'price'=>39.95,
http://escodeigniter.com/guia_usuario/libraries/cart.html

1/6

5/11/2015

ClaseCart:GuadelUsuariodeCodeIgniter

'name'=>'TShirt',
'options'=>array('Size'=>'L','Color'=>'Red')
)
$this>cart>insert($data)

Importante:Losprimeroscuatrondicesdelarrayanterior(id,qty,price,and
name)sonobligatorios.Siomitealgunodeellos,losdatosnoseguardarnenel
carrito.Elquintondice(options)esopcional.Estpensadoparausarseencasos
dondesuproductotieneopcionesasociadasconl.Useunarrayparaopciones,
comosemuestraarriba.
Loscincondicesreservadosson:
idCadaproductoenelalmacntieneunidentificadornico.Normalmenteser
un"sku"uotraidentificacin.
qtyEslacantidadqueseestcomprando.
priceEselpreciodeltem.
nameEselnombredeltem.
optionsCualquieratributoadicionalqueesnecesarioparaidentificaral
producto.Tienenquepasarsemedianteunarray.
Ademsdeloscincondicesdearriba,haydospalabrareservadas:rowidy
subtotal.SeusaninternamenteenlaClaseCart,porloqueNOdebeusaresas
palabrascomondicesalinsertardatosenelcarrito.
AgregarVariostemsalCarritoEsposibleagregarenunasolaaccinvarios
productosalcarritoalusarunarraymultidimensional.Estoestilencasosdonde
deseapermitirlealagenteseleccionarentrevariostemsdelamismapgina.

AgregarVariostemsalCarrito
Esposibleagregarenunasolaaccinvariosproductosalcarritoalusarunarray
multidimensional.Estoestilencasosdondedeseapermitirlealagente
seleccionarentrevariostemsdelamismapgina.
$data=array(
array(
'id'=>'sku_123ABC',
'qty'=>1,
'price'=>39.95,
'name'=>'TShirt',
'options'=>array('Size'=>'L','Color'=>'Red')
),
array(
'id'=>'sku_567ZYX',
'qty'=>1,
'price'=>9.95,
'name'=>'CoffeeMug'
),
array(
http://escodeigniter.com/guia_usuario/libraries/cart.html

2/6

5/11/2015

ClaseCart:GuadelUsuariodeCodeIgniter

'id'=>'sku_965QRS',
'qty'=>1,
'price'=>29.95,
'name'=>'ShotGlass'
)
)
$this>cart>insert($data)

MostrarelCarrito
Paramostrarelcarritocrearunarchivodevistaconcdigosimilaralmostradoa
continuacin.
Porfavoradviertaqueesteejemplousaelhelperform.
<?phpechoform_open('ruta/al/controlador/update/function')?>
<tablecellpadding="6"cellspacing="1"style="width:100%"border="0">
<tr>
<th>Cantidad<</th>
<th>ItemDescripcin</th>
<thstyle="textalign:right">Precio</th>
<thstyle="textalign:right">SubTotal</th>
</tr>
<?php$i=1?>
<?phpforeach($this>cart>contents()as$items):?>
<?phpechoform_hidden($i.'[rowid]',$items['rowid'])?>
<tr>
<td><?phpechoform_input(array('name'=>$i.'[qty]','value'=>$items['qty'],'maxlength'
=>'3','size'=>'5'))?></td>
<td>
<?phpecho$items['name']?>
<?phpif($this>cart>has_options($items['rowid'])==TRUE):?>
<p>
<?phpforeach($this>cart>product_options($items['rowid'])as$option_name=>
$option_value):?>
<strong><?phpecho$option_name?>:</strong><?phpecho$option_value?><br
/>
<?phpendforeach?>
</p>
<?phpendif?>
</td>
<tdstyle="textalign:right"><?phpecho$this>cart>format_number($items['price'])?>
</td>
<tdstyle="textalign:right">$<?phpecho$this>cart>format_number($items['subtotal'])?
http://escodeigniter.com/guia_usuario/libraries/cart.html

3/6

5/11/2015

ClaseCart:GuadelUsuariodeCodeIgniter

></td>
</tr>
<?php$i++?>
<?phpendforeach?>
<tr>
<tdcolspan="2"></td>
<tdclass="right"><strong>Total</strong></td>
<tdclass="right">$<?phpecho$this>cart>format_number($this>cart>total())?></td>
</tr>
</table>
<p><?phpechoform_submit('','ActualicesuCarrito')?></p>

ActualizarelCarrito
Paraactualizarlainformacindelcarrito,tienequepasarunarrayconteniendoel
RowIDylacantidadalafuncin$this>cart>update():
Nota:Silacantidadseestableceacero,seeliminareltemdelcarrito.

$data=array(
'rowid'=>'b99ccdf16028f015540f341130b6d8ec',
'qty'=>3
)
$this>cart>update($data)
//Ounarraymultidimensional
$data=array(
array(
'rowid'=>'b99ccdf16028f015540f341130b6d8ec',
'qty'=>3
),
array(
'rowid'=>'xw82g9q3r495893iajdh473990rikw23',
'qty'=>4
),
array(
'rowid'=>'fh4kdkkkaoe30njgoe92rkdkkobec333',
'qty'=>2
)
)
$this>cart>update($data)

QuesunRowID?ElrowIDesunidentificadornicoquelogeneraelcdigo
delcarritocuandoseagregauntemalcarrito.Laraznporlaquesecreaun
identificadornicoesparaquelosmismosproductoscondiferentesopciones
puedenseradministradosporelcarrito.
http://escodeigniter.com/guia_usuario/libraries/cart.html

4/6

5/11/2015

ClaseCart:GuadelUsuariodeCodeIgniter

Porejemplo,digamosquealguiencompradoscamisetasiguales(mismoIDde
producto),perodiferentestamaos.ElIDdeproducto(yotrosatributos)sern
idnticosparaambostamaosporqueeslamismacamiseta.Lanicadiferencia
sereltamao.Elcarritoporlotanto,tieneunmedioparaidentificaresta
diferenciaparaquelosdostamaosdecamisetassepuedanmanejar
independientemente.Lohacemediantelacreacindeunnico"rowID"basadoen
elIDdeproductoyalgunasopcionesasociadasal.
Encasitodosloscasos,laactualizacindelcarritoseralgoqueelusuariohace
mediantelapgina"vercarrito",porlotantocomodesarrollador,espocoprobable
quetengaquepreocuparseporel"rowID",apartedeasegurarsequesupgina
"vercarrito"contengaestainformacinenuncampoocultodeformularioy
asegurarsequesepasaalafuncindeactualizacincuandoseenvaelformulario
deactualizacin.Paramayorinformacin,examinemsabajolaconstruccindela
pgina"vercarrito".

ReferenciadeFunciones
$this>cart>insert()
Lepermiteagregartemsalcarritodecompras,comoseindicamsarriba.

$this>cart>update()
Lepermiteactualizartemsenelcarritodecompras,comoseindicamsarriba.

$this>cart>total()
Muestraeltotaldelcarrito.

$this>cart>total_items()
Muestralacantidaddetotaldetemsenelcarrito.

$this>cart>contents()
Devuelveunarrayconteniendotodolodelcarrito.

$this>cart>has_options(rowid)
DevuelveTRUE(booleano)siunafilaenparticulardelcarritocontieneopciones.Se
diseestafuncinparausarladentrodeunbuclecon$this>cart>contents(),
http://escodeigniter.com/guia_usuario/libraries/cart.html

5/6

5/11/2015

ClaseCart:GuadelUsuariodeCodeIgniter

yaquetienequepasarelkbd>rowidaestafuncin,comosemuestraenelejemplo
deMostrarelCarritomsarriba.

$this>cart>product_options(rowid)
Devuelveunarraydeopcionesparaunproductoenparticular.Sediseesta
funcinparausarladentrodeunbuclecon$this>cart>contents(),yaquetiene
quepasarelrowidaestafuncin,comosemuestraenelejemplodeMostrarel
Carritomsarriba.

$this>cart>destroy()
Lepermitedestruirelcarrito.Estafuncinprobablementeseallamadacuandoest
terminandoelprocesamientodelpedidodelcliente.

Temaanterior:ClaseCalendarSubirGuadelUsuarioPrximotema:ClaseConfig
CodeIgniterCopyright20062012EllisLab,Inc.

http://escodeigniter.com/guia_usuario/libraries/cart.html

6/6

Potrebbero piacerti anche