Publicidad

Rutas dinámicas en codeigniter 4


Por Alex el 04/04/2022 , Comentar el artículo

Comparte este artículo:      




Como podemos extraer desde una base de datos las rutas de Codeigniter 4 y escribirlas en el fichero Routes.php, crear las rutas de forma dinámica ...


Para poder extraer las rutas de una tabla y añadirlas al fichero Routes.php necesitamos crearnos una librería con el código que acceda al modelo, con esto es suficiente para tener rutas dinámicas.

Primero creamos una tabla para las rutas, para el ejemplo:


CREATE TABLE `rutas` (
  `id` int NOT NULL,
  `name` varchar(100) NOT NULL,
  `icon` varchar(100) DEFAULT NULL,
  `slug` varchar(50) NOT NULL,
  `enabled` int NOT NULL DEFAULT '0',
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Aquí lo importante es el campo name y el campo slug. Y ponéis las rutas que mas os gusten :-)

Ahora creamos el modelo y accedemos a la base de datos donde tenemos las rutas almacenadas:

namespace App\Models;

use CodeIgniter\Model;

class RutasModel extends Model
{
	function __construct()
        {
          parent::__construct();
         $this->db = db_connect( 'default');
        }


        private function ExecuteQueryResults( $sql)
	{

		$query = $this->db->query( $sql);
                $rows = $query->getResult();
                $query->freeResult();

              return ( $rows);
	}

	public function GetRoutes()
	{
		return( $this->ExecuteQueryResults(
                  "Select id, name, slug From rutas Where enabled = 1 Order by name asc"
                ));
	}

}

El modelo lo que hace es conectarse a la base de datos y una consulta para extraer las rutas, este método que extrae las rutas ahora lo llamaremos desde el controlador (RutasController.php) para pintarlas por pantalla y lo llamaremos tambien desde el fichero Routes.php para crear as rutas.


namespace App\Controllers;

class RutasController extends BaseController
{
    public function index()
    {

        $modelRutas = new \App\Models\RutasModel();

        echo "Rutas:

"; foreach ( $modelRutas->GetRoutes() as $row) { echo "".$row->name . "
"; } } public function customRoutes() { print_r( "
" . print_r( $this->request->uri->getSegments(), true) . "
"); } }
El controlador RutasController.php tiene dos métodos, el método index que es el punto de entrada de la aplicación y donde se crea un listado del menú de rutas. Ahora cambiamos la ruta en el fichero Routes.php para que cuando se acceda al web vaya directo a este método. Cambiamos este código:

$routes->get('/', 'Home::index');

Por este otro:

$routes->get('/', 'RutasController::index');

El segundo método customRoutes es donde se redirige la llamada de todas las url dinámicas.

Ahora creamo la clase que obtendra las rutas para escribirlas en el fichero Routes.php

Creamos en el directorio Libraries una clase que en el ejemplo he llamado CustomRoutes.php y dentro ponemos e siguiente código

namespace App\Libraries;

class CustomRoutes
{

  public function GetCustomRutes()
  {
     $modelPosts = new \App\Models\RutasModel();

     return( $modelPosts->GetRoutes());
  }

}

Este método devuelve un objecto con la lista de rutas y lo vamos a llamar desde el fichero Routes.php, en éste fichero, debajo del último cambio que hemos realizado escribimos el siguiente código:

$custom_lib = new \App\Libraries\CustomRoutes();

$routes = $custom_lib->GetCustomRutes();
foreach ( $routes as $s_route)
{
  $routes->get( $s_route->slug, 'RutasController::customRoutes');
}

Ahora para probarlo ejecutamos el servidor que tiene incorporado PHP en el directorio public

php -S 127.0.0.1:8000


He dejado el código completo del proyecto en Codeigniter en git:

https://github.com/depruebas/Rutas-dinamicas-CI4

Y esto es todo
Saludos, y feliz programming
Alex.



Si te ha gustado el artículo compartelo en:      



También puede interesarte:

Instalar Codeigniter 4 y ponerlo en marcha

Instalar Codeigniter 4 y ponerlo en marcha

Por Alex, el 23/05/2022

Curso de creación de una API en PHP

Curso de creación de una API en PHP

Por Alex, el 20/04/2022

Como crear rutas en php

Como crear rutas en php

Por Alex, el 21/03/2022

Clase para leer ficheros de configuración en PHP

Clase para leer ficheros de configuración en PHP

Por Alex, el 09/02/2022

Codeigniter 4 no registra bien las horas en los logs

Codeigniter 4 no registra bien las horas en los logs

Por Alex, el 03/02/2022

Codeigniter 4 no muestra errores en el navegador

Codeigniter 4 no muestra errores en el navegador

Por Alex, el 04/01/2022


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.