Concepte
En CodeIgniter 4, una Cell (o "View Cell") és una característica que et permet encapsular fragments de lògica i presentació HTML que es repeteixen en diverses parts de la teva aplicació o en diferents pàgines. Són com "mini-vistes" amb la seva pròpia lògica independent, que es poden incloure fàcilment dins d'altres vistes.
Què és una Cell?
Imagina que tens components de la teva interfície d'usuari que apareixen en múltiples llocs:
-
Un bloc de "posts recents" en un blog.
-
Un widget de carret de la compra amb el nombre d'articles.
-
Un formulari de login petit a la barra lateral.
-
Un menú de navegació dinàmic.
-
Un quadre d'alertes o missatges.
- Un adblock de publicitat
En lloc de repetir el codi (HTML i la lògica associada per obtenir les dades) a cada vista, pots crear una Cell. Aquesta Cell tindrà la seva pròpia classe (on resideix la lògica) i, opcionalment, la seva pròpia vista (on es defineix el HTML).
CodeIgniter 4 suporta dos tipus de Cells:
-
Simple Cells: Poden ser qualsevol classe i mètode que retorni una cadena (string) HTML. Són més simples però menys flexibles.
-
Controlled Cells: Són classes que estenen
CodeIgniter\View\Cells\Cell
. Aquestes ofereixen més funcionalitats, com l'ús de propietats calculades, mètodes de presentació i una millor integració amb les vistes. Es generen típicament aapp/Cells/
.
Utilitat i Beneficis:
-
Modularitat i Reutilització del Codi:
-
Permeten dividir grans blocs de lògica i presentació en components més petits i manejables.
-
Una vegada creada, una Cell es pot reutilitzar fàcilment en qualsevol vista, eliminant la duplicitat de codi (DRY - Don't Repeat Yourself).
-
-
Separació de Preocupacions (SOC - Separation of Concerns):
-
Ajuda a mantenir les teves vistes principals més netes, ja que la lògica específica d'un fragment de la UI es trasllada a la Cell corresponent.
-
La lògica per obtenir les dades d'un component (per exemple, els 5 posts més recents) es troba dins de la classe de la Cell, no en el controlador principal ni directament en la vista.
-
-
Manteniment Simplificat:
-
Si necessites modificar un component (com el disseny d'un "post recent" o la manera en què s'obtenen les dades), només has de canviar el codi dins de la Cell corresponent, sense afectar altres parts de la teva aplicació.
-
-
Llegibilitat del Codi:
-
Les vistes esdevenen més llegibles, ja que en lloc de complexos blocs de PHP, veuràs una simple crida a la Cell:
PHP<?= view_cell('Blog::recentPosts', ['limit' => 5]) ?>
-
-
Caching:
-
Les Cells poden ser cachejades de manera independent. Si un component no canvia sovint (per exemple, un menú de navegació estàtic o posts recents que s'actualitzen cada hora), pots cachejar la sortida de la Cell per millorar el rendiment de l'aplicació, sense haver de cachejar tota la pàgina.
-
-
Passatge de Paràmetres:
-
Pots passar paràmetres a les Cells per personalitzar-ne el comportament o la informació que mostren (com
['limit' => 5]
en l'exemple anterior).
-