Codeigniter e la battaglia di Azincourt: perché risolvere il problema della paginazione dopo 42 giorni di guerre con il framework evoca la grande impresa di Enrico V

web design umbria

Sono al giorno 42 di lotta con codeigniter framework e oggi dopo due ore di serrati assedi e combattimenti corpo a corpo l’esercito del newbie ha sconfitto le mirabili armate dello sconosciuto framework sul problema della paginazione. Per intenderci andando su http://umbriawayformazione.altervista.org/ci_project_competenze/ in basso si noterà una paginazione abbastanza grezza ma andando sull’ odierno
http://umbriawayformazione.altervista.org/ci_project_aforismi/ si noterà che il salto di qualità sui link di scorrimento per le pagine é evidente. Cosa é successo, come é potuto succedere e perché per diverso tempo pur combattendo la stessa guerra non l’ho mai vinta? La risposta potrebbe essere perché mi mancava una informazione importante, l’istruzione:

$this->pagination->initialize($config);

Oppure che uno dovrebbe consultare più spesso siti come https://stackoverflow.com/ dove andare a vedere le situazioni critiche in ambito programmazione che hanno trovato già soluzione. Anche se non ho vinto la guerra perché continuano a persistere problemi come le stringhe da estrarre o la paginazione sui dati filtrati che non trovano riscontri positivi, la risoluzione della battaglia con la paginazione segna comunque una svolta per il morale e anche se non é paragonabile a quella di Enrico V che il 25 ottobre del 1415 vinse qualcosa di incredibile contro i francesi con uno schieramento di uomini quasi dimezzato (i francesi ebbero il torto di snobbare gli arcieri avversari e di indossare pesanti armature in un giorno di pioggia) l’epic win non può passare sottotono. Ripassiamo prima un pò di storia da https://it.wikipedia.org/wiki/Battaglia_di_Azincourt:

La battaglia di Azincourt si svolse vicino l’omonima località nell’odierno dipartimento del Passo di Calais il 25 ottobre 1415 nell’ambito della guerra dei cent’anni, vedendo contrapporsi le forze del Regno di Francia di Carlo VI contro quelle del Regno d’Inghilterra di Enrico V. Falliti i negoziati con i francesi, gli inglesi ripresero la campagna sul continente europeo. A causa delle malattie, l’esercito di Enrico perse numerosi soldati e fu costretto a ritirarsi ripiegando su Calais, dopo l’assedio di Harfleur, in Normandia. Lungo la via per Calais, i francesi sbarrarono loro la strada presso Azincourt con un’armata molto più numerosa. Negli scontri che seguirono, re Enrico in persona guidò in prima linea il suo esercito, anche se la battaglia vide un ampio uso dell’arco lungo, con circa l’80% delle forze inglesi formate da arcieri. Il re Carlo VI di Francia invece non prese parte alla battaglia, a causa dei disturbi psichici di cui soffriva, e al posto suo l’esercito francese era guidato dal connestabile Carlo I d’Albret e da altri nobili. In virtù della decisiva vittoria inglese, la battaglia è considerata uno dei momenti più cupi della storia della Francia e al contrario uno dei più fulgidi per l’Inghilterra, la quale vide crescere il morale dei suoi uomini e il prestigio del regno dando il via ad un nuovo periodo di supremazia nel conflitto. La battaglia è una delle più celebrate in Inghilterra ed è stata uno dei trionfi più importanti della guerra dei cent’anni, assieme alla battaglia di Crécy e a quella di Poitiers, tanto che nel 1599 divenne parte focale dell’opera teatrale Enrico V, di William Shakespeare

Tornando a noi il problema era molto semplice: come stilizzare con i css la paginazione offerta in automatico dal framework che si esprime con il famoso:

<?php echo $links; ?>

e che non vuole saperne di mettersi a posto producendo le stramberie più anomale? Oggi l’illuminazione divina dopo oltre quaranta giorni trovando per l’appunto per me lo sconosciuto comando $this->pagination->initialize($config); che aggiunto alla fine di un set di istruzioni sul controller:

$config['full_tag_open'] = "<ul class='pagination'>";
$config['full_tag_close'] = '</ul>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li><a href="#" class="active">';
$config['cur_tag_close'] = '</a></li>';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$config['next_link'] = 'Next';
$config['next_tag_open'] = '<li><i class="fa fa-long-arrow-right"></i>';
$config['next_tag_close'] = '</li>';
$config['prev_link'] = 'Previous';
$config['prev_tag_open'] = '<li><i class="fa fa-long-arrow-left"></i>';
$config['prev_tag_close'] = '</li>';
$this->pagination->initialize($config);

e avendo l’accortezza di togliere il tag UL dalla pagina VISTA produce in combinazione con il CSS giusto l’effetto finale che rimane epic win:

<!-- Pagination -->
<div class="pagination">
<?php echo $links; ?>
</div>

A questo punto non ci resta che recuperare uno dei tanti CSS da mettere sulla pagina statica preso dal sito di risorse https://www.w3schools.com/:

pagination {
  display: inline-block;
}
.pagination li {
  display: inline-block;
}
.pagination a {
  color: black;
  float: left;
  padding: 8px 16px;
  text-decoration: none;
  border: 1px solid #ddd;
}

.pagination a.active {
  background-color: #1e90ff;
  color: white;
  border: 2px solid black;
}

.pagination a:hover:not(.active) {background-color: #ddd;}

.pagination a:first-child {
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
}

.pagination a:last-child {
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
}

da notare alcune situazioni critiche:

1 se viene omesso $this->pagination->initialize($config); stai nei 42 giorni successivi a chiederti perché il tutto non funziona

2 definire la classe pagination sul della pagina statica e non sul tag

A questo punto dopo aver modellato correttamente il controller, la vista corrispondente e la cartella assets che contiene il CSS pagination.css abbiamo una grana in meno da risolvere nei nostri applicativi! Peccato che Shakespeare non abbia potuto usare l’ispirazione su https://codeigniter.com/download, altrimenti quali opere sublimi avrebbe potuto forgiare nel fuoco e nel ghiaccio?

Epic Win

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...