IMPLEMENTADO UNA IDEA  CON JSON

Nada tan peligroso como una idea amplia en cerebros estrechos.

-Hipólito Taine

 

Bueno estamos eufóricos por que próximamente saldrá la nueva versión de ALUX. Y una de las mejoras que va tener esta nueva actualización es una mejor manera de organización de los módulos. Y como dijimos en el otro capitulo Volveremos con un resultado. <<No te creo quiero ir a ese post>>

Alux comenzó con un poco de caos y nuestra primera versión teníamos los módulos sin categorizar y esto puede ser un problema cuando este vayan evolucionando. Entonces la idea es crear submodulos  y la idea no era crear una tabla extra. Así que optamos por campo donde almacenamos un JSON.

 

Nuestra estructura de datos

[ 

   { 

      "name":"nuevo",

      "icon":"add_circle",

      "url":"productos/nuevo"

   },

   { 

      "name":"catalogos",

      "icon":"list",

      "url":"productos/catalogos"

   },

   { 

      "name":"stock",

      "icon":"line_style",

      "url":"productos"

   } ,

   { 

      "name":"importar",

      "icon":"file_upload",

      "url":"productos/importar"

   }

]



Con esta estructura nosotros creamos una especie de tabla. Y como ya varios manejadores de base de datos soportan el tipo de campo JSON. Uno de ellos son mariaDB y mySQL. La cosa se pone interesante ya que la NoSQL se está poniendo de moda.

Si quieren ustedes validar su estructura JSON. para que al hora que los parser no les den error. lo pueden hacer desde esta pagina https://jsonformatter.curiousconcept.com/

Tratamiento de los datos en Lenguaje PHP.

Ok si nosotros hubiéramos optado por crear una nueva tabla. Nuestra capa de modelo hubiese alterado de una manera consecutiva  ya que hubiésemos hecho un join o una subconsulta para poder traer toda la estructura de Modulo tiene muchos Submodulos. Pero como este no fue el caso solo recogemos el campo de submodules.

 

El código

 

<ul id="slide-out" class="side-nav fixed leftside-navigation"> 

    <li class="no-padding">

        <ul class="collapsible" data-collapsible="accordion">

        <?php foreach($modules as $module => $item): ?>

        <?php  if(is_null($item->submodules)): ?>

            <li class="bold">

                  <a href="<?= base_url().$item->url ?>" class="waves-effect waves-cyan">

                    <i class="material-icons"><?=$item->icon?></i>

                    <span class="nav-text"><?=$item->module?></span>

                  </a>

            </li>

        <?php else: ?>

            <li class="bold">

                <a class="collapsible-header waves-effect waves-cyan">

                    <i class="material-icons"><?=$item->icon?></i>

                    <span class="nav-text"><?=$item->module?></span>

                </a>

                <div class="collapsible-body">

                <ul>

                <?php foreach(json_decode($item->submodules) as $submodule) : ?>

                    <li>

                        <a href="<?= base_url().$submodule->url?>">

                          <i class="material-icons"><?= $submodule->icon ?></i>

                          <span><?= $submodule->name ?></span>

                        </a>

                    </li>

                <?php endforeach;?> 

                </ul>

                </div>

            </li>

        <?php endif; ?>

        <?php endforeach; ?> 

        </ul>

    </li>

</ul>

 

Como ustedes ven la línea 39 : donde viene

      <?php foreach(json_decode($item->submodules) as $submodule) : ?>

Decodificamos el json con la funcion json_decode y autoticamente se convierte en un objeto iterable con el bien amado y simple presente en todos los lenguajes foreach. De esta manera solo hago dinamico el html en el ciclo y listo.

Si tienen dudas no duden en comentarme. Saludos comunidad y hasta la próxima. Este fue mi resultado

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *