Vincere a 2.757 metri con Codeigniter è fattibile? Forse ti confondi con il Giro d’Italia, ma il web developer é come un ciclista che tenta una scalata conoscitiva: per esempio il CRUD è alla tua portata?

Il CRUD per gli sviluppatori é come il santo Graal nelle leggende di Re Artù: l’acronimo sta per CREATE-READ-UPDATE-DELETE. Si tratta di una estrapolazione e di una gestione dei dati dal database che riguarda come esercizio muscolare una delle prime attività di qualunque web developer, tanto per restare in tema di ciclismo. Codiigniter è abbastanza ostico all’ inizio (ma sempre meno complicato da assimilare rispetto a Laravel per esempio) per cui se la sensazione é quella di non riuscire a fare la salita dello Stelvio per transitare per primo alla Cima Coppi e magari vincere la tappa, conviene fermarsi, rifornirsi di bevande e mantellina e consolidare quello che è ormai base tecnica consolidata. Ripassiamo quindi i fondamentali prima di affrontare la questione del crud perchè sappiamo che la salita richiede zuccheri e si rischia di andare come si dice in gergo, quando si tenta di studiare una nuova tecnologia, FUORI RUOTA, come dicono i commentatori della Rai a gara sportiva in onda. Abbiamo detto che conviene concentrarsi su questo framework perchè offre un set di strumenti da coltellino svizzero integrati in unico ambiente di sviluppo, così a sostegno ci ritroviamo numerosi helper o funzioni specifiche utili per risolvere problemi e librerie per attingere a risorse esterne come il famoso database per esempio. Abbiamo sottolineato più volte l’importanza di separare lo scheletro umano dalla muscolatura e dai vestiti che lo compongono, per cui il vantaggio di questa gestione é che tutto è circoscritto alla sua natura strutturale, per cui avremo un Modello che si occuperà della parte logica di gestione dei dati per esempio, avremo una View che non farà altro che visualizzare le nostre richieste a video e in mezzo abbiamo il nostro bel CONTROLLER che dobbiamo considerare come un gigantesco pannello di controllo che attinge dal Model per riconsegnare alla Vista. In questo modo tutto è ordinato e pulito a livello di sviluppo e anche più facile mettere in piedi degli applicativi risparmiando un sacco di tempo. Per imparare Codeigniter bisogna avere conoscenza livello base di php procedurale e un pò di OOP insieme a CSS, HTML e anche Bootstrap per abbellire i nostri vestiti. La ricchezza di funzionalità subito disponibili in uno strumento veloce consentono davvero un gran risparmio di tempo. Per lavorare con codeigniter è sufficiente scaricare un server locale che abbia integrato apache e mysql in modo da parserizzare i nostri file php e un editor di codice e ovviamente il pacchetto completo. Quindi per il localhost che serve alle nostre pagine scaricare https://www.apachefriends.org/it/index.html, per un editor visuale abbiamo cose del tipo ATOM, SUBLIME o VISUAL STUDIO CODE scaricabile all’ indirizzo: https://code.visualstudio.com/ e infine il nostro framework si trova all’ indirizzo https://codeigniter.com/ ; adesso ripassiamo i fondamentali perchè lavorare e sviluppare con procedurale è un conto e invece diverso é l’approccio MVC con la definizione di classi e metodi costruttori. Si lavora prevalentemente solo sulla cartella APLLICATION di codeigniter che guarda caso contiene anche una cartella VIEW e una MODEL oltre a quella CONTROLLER! La cartella Sysytem è considerata il core di sistema ed é quella che fa girare il tutto ma é anche un luogo fisico dove non dovremmo mai intervenire. Dentro la cartella Appllication abbiamo la cartella CONFIG e al suo interno molti file critici di configurazione e settaggio come:

database.php
config.php
routes.php
autoload.php

che consentono rispettivamente aggancio al DB e quindi gestione su database mysql, definizione di path sulle url, instradamenti e caricamenti automatici di risorse , ovviamente richiamabili anche da codice scritto normale. Il modello offre le pallottole al caricatore, la pistola controller spara verso la vista e viceversa ritorna i dati su eventuali interazione dell’ utente al controller che andrà a interrogare il modello per farsi restituire dei dati da ri-spedire al mittente. Diamo meglio una occhiata su questo flusso analizzando l’architettura seguente:

L’utente invia una richiesta dalla vista o finestra o browser che viene instradata seguendo criteri di sicurezza per arrivare infine al controller che potremmo considerare una sorta di mago Merlino della situazione. Merlino va a socmodare i suoi amici al di là del muro, gente che lutente finale non vedrà mai che sono:

Model
Librerie
Helpers
Plugins
assets (risorse grafiche)
scripts
etc

una volta prese tutte le info pertinenti alle richieste mette tutto insieme e assembla e spedisce tutto alla vista che sfruttando il CACHING restituisce il risultato richiesto all’ utente. Bello no?!

Semplificando io chiedo il controller restituisce prendendo i dati a destra e a manca come una piovra, per cui é da considerarsi come un vigile che controlla il traffico, ma il lavoro sporco lo fa il MODEL mentre la vista è quella che fa la preziosa senza lavorare se non offrire modo all’ utente di interagire. A questo punto diamo un occhiata anche allo schema del flusso.

Con questo schema se io scrivessi nella funzione index del controller Welcome di default dopo lo scaricamento qualcosa del tipo:

public function index()
{
echo “fantastico adesso posso personalizzare i contenuti a mio uso e consumo!”;
//$this->load->view(‘welcome_message’);
}

che cosa accadrebbe? Semplicemente che Codeigniter mi direbbe picche (ci sarebbe un messaggio di errore) perché la mia istruzione procedurale non segue la logica MVC, se volessi scrivere una bella scritta simile andrei sulla welcome_message.php, commenterei le parti statiche di HTML e magari con un h1 inserirei la scritta personalizzata di cui sopra. Il fatto è che la funzione index reindirizza il flusso verso la view. Quindi lo schema é:

LOCALHOST seguito dal nome del CONTROLLER seguito dal nome del METODO (nome della funzione) seguito da FUNZIONE 2 e infine dai PARAMETRI

Il controller gestisce le richieste, il model manipola i dati e fa da CPU e la vista fa la presentazione all’ utente. Adesso vediamo il CRUD. Prima di entrare nel crud vero e proprio andiamo sulla nostra drogheria preferita: https://www.grocerycrud.com/

Che cosa è questa cosa?

E’ un modo per non tribolare molto per mettere in piedi un CRUD veloce, pertanto in questo articolo lo testeremo con uno scacco matto in dieci mosse!

Mossa numero 1, scaricare codeigniter

Mossa numero 2, scaricare grocerycrud

Mossa numero 3, decomprimere i due pacchetti e prelevare la cartella APPLICATION di grocerycrud sovrascrivendo quella di codeigniter con lo stesso nome (copia e incolla); fare la stessa operazione anche per la cartella ASSETS altrimenti ci darà errore

Mossa numero 4, configurare il database come sappiamo interagendo su database.php e scrivendo i 4 parametri che sono server, utente, pwd e nome database

Mossa numero 5, definire un nuovo controller chiamato Main nel file main.php

Mossa numero 6 scrivere all’ interno del controller il seguente codice:

<?php if ( ! defined(‘BASEPATH’)) exit(‘No direct script access allowed’);

class Main extends CI_Controller {

function __construct()
{
parent::__construct();

/* Standard Libraries of codeigniter are required */
$this->load->database();
$this->load->helper(‘url’);
/* —————— */

$this->load->library(‘grocery_CRUD’);

}

public function index()
{
echo “<h1>Welcome to the world of Codeigniter</h1>”;//Just an example to ensure that we get into the function
die();
}

public function western()
{
$crud = new grocery_CRUD();
$crud->set_table(‘western’);
$output = $crud->render();

$this->_example_output($output);
}

function _example_output($output = null)

{
$this->load->view(‘our_template.php’,$output);
}
}

/* End of file Main.php */
/* Location: ./application/controllers/Main.php */

 

Mossa N 7, creare una vista di nome our_template.php

Mossa N 8 scrivere le seguenti info nel file vista:

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″ />

<?php
foreach($css_files as $file): ?>
<link type=”text/css” rel=”stylesheet” href=”<?php echo $file; ?>” />

<?php endforeach; ?>
<?php foreach($js_files as $file): ?>

<script src=”<?php echo $file; ?>”></script>
<?php endforeach; ?>

<style type=’text/css’>
body
{
font-family: Arial;
font-size: 14px;
}
a {
color: blue;
text-decoration: none;
font-size: 14px;
}
a:hover
{
text-decoration: underline;
}
</style>
</head>
<body>
<!– Beginning header –>
<div>
<a href='<?php echo site_url(‘examples/offices_management’)?>’>Offices</a> |
<a href='<?php echo site_url(‘examples/employees_management’)?>’>Employees</a> |
<a href='<?php echo site_url(‘examples/customers_management’)?>’>Customers</a> |
<a href='<?php echo site_url(‘examples/orders_management’)?>’>Orders</a> |
<a href='<?php echo site_url(‘examples/products_management’)?>’>Products</a> |
<a href='<?php echo site_url(‘examples/film_management’)?>’>Films</a>

</div>
<!– End of header–>
<div style=’height:20px;’></div>
<div>
<?php echo $output; ?>

</div>
<!– Beginning footer –>
<div>Footer</div>
<!– End of Footer –>
</body>
</html>

 

Mossa N 9 , verificare che il nome tabella sia giusto:
$crud->set_table(‘western’);

 

Mossa N 10 guardare l’effetto che fa all’ indirizzo:
http://localhost/your_project/index.php/main/western

 

Semplicemente fantastico questo Grocery CRUD FREE scaricabile all’ indirizzo https://www.grocerycrud.com/ ! Funziona tutto , la modifica, l’addizione di dati, la cancellazione, lo abbiamo provato aggiungendo per un pugno di dollari e lo straniero denza nome ed é tutto ok! Il tutorial for dummies non spiega tutto in maniera lineare all’ indirizzo https://www.grocerycrud.com/documentation/create-crud-codeigniter-tutorial/ e qui abbiamo sperimentato la procedura del PRENDO TUTTO IL CONTENUTO IN DOWNLOAD DI GROCERY CRUD E LO COPIO SOPRA LE STESSE CARTELLE DEL CONTENUTO SCARICATO CON IL FRAMEWORK ORIGINALE DECOMPRESSO! Risultato tutto ok, attenzione anche alla parte della pagina statica che nell’ HEAD cicla le risorse ASSETS:

<?php
foreach($css_files as $file): ?>
<link type=”text/css” rel=”stylesheet” href=”<?php echo $file; ?>” />
<?php endforeach; ?>
<?php foreach($js_files as $file): ?>
<script src=”<?php echo $file;?>”></script>
<?php endforeach; ?>

 

 

image_print

Be the first to comment

Leave a Reply