Login
Libri
Home Le Classi Classe Carrello Della Spesa

Classe Carrello Della Spesa

Share

La Classe Carrello (oppure Classe Cart) permette di aggiungere oggetti ad una sessione activa mentre un utente visita il proprio sito. Questi oggetti possono essere recuperati e visualizzati nel classico formato "carrello della spesa", permettendo all'utente di aggiornarne le quantità oppure rimuovere gli oggetti dal carrello.

E' importante notare che la Classe Carrello compre solo le funzionalità base di un carrello. Non si occupa di spedizione, autorizzazione delle carte di credito o altri processi.

Inizializzare La Classe Carrello della Spesa

Importante: La Classe Carrello Utilizza la Classe Session di CodeIgniter per salvare le informazione del carrello nel database, cos', pirma di utilizzare la Classe Cart è necessario configurare una tabella nel proprio Database secondo le indicazioni presenti nella Documentazione sulle Sessioni, ed impostare le preferenze delle sessioni nel file application/config/config.php per utilizzare un database.

Per inizializzare la classe Shopping Cart (Carrello della Spesa) all'interno del proprio controller, si utilizza la funzione $this->load->library:

 

Una volta caricata, l'oggetto Cart sarù disponibile utilizzando: $this->cart

Nota: La Classe Cart carichera ed inizializzerà la Classe Session automaticamente, così se dovrete usare le sessioni da qualche altra parte nella vostra applicazione, non sarà necessario caricare la Classe Session.

Aggiungere un oggetto al Carrello

Per aggiugere un oggetto al carrello della spesa, bisogna semplicemente passare un array con le informazioni del prodotto attraverso la funzione $this->cart->insert(), come mostrato di seguito:


$data = array(
'id'      => 'sku_123ABC',
'qty'     => 1,
'price'   => 39.95,
'name'    => 'T-Shirt',
'options' => array('Size' => 'L', 'Color' => 'Red')
);

$this->cart->insert($data); 

Importante: I primi quattro indici precedenti (id, qty, price, and name) sono obbligatori. Se solo uno non viene omesso i dati non verranno salvati nel carrello. Il quindo indice è facoltativo (options). Lo si usa quando ad un prodotto sono associate delle opzioni. Si utilizzi un array per le opzioni, come mostrato sopra.

I cinque indici riservati sono:

  • id - Ogni prodotto nel negozio deve avere un identificativo unico. Di solito si tratto di uno "sku" (Stock-keeping Unit) oppure un altro identificativo.
  • qty - La quantità acquistata.
  • price - Il prezzo dell'oggetto.
  • name - The name of the item.
  • options - Any additional attributes that are needed to identify the product. These must be passed via an array.

In più ai cinque indici precedenti ci sono altre due parole riservate: rowid e subtotal. Queste sono usate internamente alla Classe Cart, quindi è necessario NON usarle per indicare indici quando si inseriscono dati nel carrello.

Il proprio array potrà contenere informazioni aggiuntive. Qualunque cosa si include nell'array verrà salvato nella sessione. Si consiglia comunque di standardizzare le informazioni dei prodotti in modo da facilitarne la visualizzazione in tabelle.

Aggiungere Oggetti Multipli nel Carrello

Grazie all'utilizzo di un array multidimensionale, come mostrato di seguito, sarà possibile aggiungere più prodotti contemporaneamente in una unica azione. Questo è particolarmente utile si desidera permettere alle persone di selezionare piuù prodotti nella stessa pagina.


$data = array(
array(
'id'      => 'sku_123ABC',
'qty'     => 1,
'price'   => 39.95,
'name'    => 'T-Shirt',
'options' => array('Size' => 'L', 'Color' => 'Red')
),
array(
'id'      => 'sku_567ZYX',
'qty'     => 1,
'price'   => 9.95,
'name'    => 'Coffee Mug'
),
array(
'id'      => 'sku_965QRS',
'qty'     => 1,
'price'   => 29.95,
'name'    => 'Shot Glass'
)
);

$this->cart->insert($data); 

Mostra il Carrello

Per mostrare il carrello occorrerà creare un file View simile al seguente.

Da notare come questo esempio faccia uso del form helper


<?php echo form_open('path/to/controller/update/function'); ?>

<table cellpadding="6" cellspacing="1" style="width:100%" border="0">

<tr>
<th>QTY</th>
<th>Item Description</th>
<th style="text-align:right">Item Price</th>
<th style="text-align:right">Sub-Total</th>
</tr>

<?php $i = 1; ?>

<?php foreach($this->cart->contents() as $items): ?>

<?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>

<tr>
<td><?php echo form_input(array('name' => $i.'[qty]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?></td>
<td>
<?php echo $items['name']; ?>

<?php if ($this->cart->has_options($items['rowid']) == TRUE): ?>

<p>
<?php foreach ($this->cart->product_options($items['rowid']) as $option_name => $option_value): ?>

<strong><?php echo $option_name; ?>:</strong> <?php echo $option_value; ?><br />

<?php endforeach; ?>
</p>

<?php endif; ?>

</td>
<td style="text-align:right"><?php echo $this->cart->format_number($items['price']); ?></td>
<td style="text-align:right">$<?php echo $this->cart->format_number($items['subtotal']); ?></td>
</tr>

<?php $i++; ?>

<?php endforeach; ?>

<tr>
<td colspan="2"> </td>
<td class="right"><strong>Total</strong></td>
<td class="right">$<?php echo $this->cart->format_number($this->cart->total()); ?></td>
</tr>

</table>

<p><?php echo form_submit('', 'Update your Cart'); ?></p>


Aggiornare il Carrello

Sarà possibile aggiornare il carrello passando alla funzione $this->cart->update() un array contenente il Row ID e la quantità:

Nota: Se la quantità è zero, l'oggetto sarà rimosso dal carrello.

Che cosa è il Row ID? Il row ID è un codice univoco generato quando viene aggiunto un oggetto al carrello. La ragione per il quale si è reso necessario la creazione di un ID unico sta nel fatto che, dal carrello, possono essere gestiti oggetti identici ma con opzioni differenti.

Per esempio, pensiamo a un cliente che acquista due T-Shirts identiche (stesso product ID), ma di taglia differente. L'ID del prodotto (ed altri attributi) saranno uguali per entrambe le taglie. L'unica differenza sarà la taglia, appunto. Il carrello deve individuare questa differenza in modo da gestire indipendentemente le due T-Shirt. Questo è possibile grazie alla creazione di un unico "row ID" basato sull'ID del prodotto e l'associazione di altre opzioni.

Nella maggioranza dei casi, aggiornare il carrello sarà un'operazione fatta dall'utente nella pagina "visualizza il carrello", così come sviluppatore, non dovrai preoccuparti tanto del row id, e per mantenere sicura la pagina di visualizzazione questa informazione dovrà essere inserita, nel form, in campi nascosti, accertandosi che venga passata alla funzione update quando il form viene inviato. Esamina con attenzione come è stata realizzata la paigna "visualizza carrello" mostrata precedentemente.


$data = array(
'rowid' => 'b99ccdf16028f015540f341130b6d8ec',
'qty'   => 3
);

$this->cart->update($data);

// Or a multi-dimensional array

$data = array(
array(
'rowid'   => 'b99ccdf16028f015540f341130b6d8ec',
'qty'     => 3
),
array(
'rowid'   => 'xw82g9q3r495893iajdh473990rikw23',
'qty'     => 4
),
array(
'rowid'   => 'fh4kdkkkaoe30njgoe92rkdkkobec333',
'qty'     => 2
)
);

$this->cart->update($data); 

Reference delle Funzioni

$this->cart->insert();

Permette di aggiungere un oggetto al carrello della spesa.

$this->cart->update();

Permette di aggiornare gli oggetti nel carrello della spesa, come descritto precedentemente.

$this->cart->total();

Mostra la somma totale del carrello.

$this->cart->total_items();

Mostra il totale degli oggetti presenti nel carrello

$this->cart->contents();

Restituisce un array contenente tutto ciò che è presente nel carrello.

$this->cart->has_options(rowid);

Restituisce TRUE (booleano) se una particolare riga del carrello contiene delle opzioni. Questa funzione è stata disegnata per essere utilizzata in un loop insieme a  $this->cart->contents(), è necessario passarle il rowid, come mostrato nell'esempio precedente "Mostra il Carrello".

$this->cart->options(rowid);

Ritorna un array con le opzioni di un particolare prodotto. Questa funzione è stata creata per essere utilizzata all'interno di un loop assieme alla funzione $this->cart->contents(), è necessario passarle il rowid, come mostrato nell'esempio precedente "Mostra il Carrello".

$this->cart->destroy();

Questa funzione distrugge il carrello. Solitamente richiamata al termine del processo di ordine.

Ultimo aggiornamento ( Mercoledì 12 Gennaio 2011 05:50 )