Rutas CodeIgniter: enrutamiento de URL con ejemplo

¿Qué son las rutas CodeIgniter?

Las rutas son responsables de responder a las solicitudes de URL. El enrutamiento hace coincidir la URL con las rutas predefinidas. Si no se encuentra ninguna coincidencia de ruta, CodeIgniter genera una excepción de página no encontrada.

Las rutas en CodeIgniter se definen utilizando la siguiente fórmula:

example.com/Controller/Method/Parameter/

AQUÍ,

  • Controlador: se asigna al nombre del controlador que debe responder a la URL.
  • Método: se asigna al método en el controlador que debe responder a la solicitud de URI.
  • Parámetro: esta sección es opcional.

Ejemplo de rutas de CodeIgniter

Veamos ahora un enrutamiento de URL práctico en CodeIgniter ejemplo.

Considere la siguiente URL http://localhost:3000/contacts/edit/1

AQUÍ,

  • El nombre del responsable del tratamiento que responde a la URL anterior es “contactos”
  • El método en la clase de controlador Contactos es "editar"
  • El método de edición acepta un parámetro. En el caso de nuestro ejemplo, el valor "1" se pasa al método.

Aquí hay una breve descripción de lo que planeamos hacer:

  • enrutamiento – el enrutamiento es responsable de responder a las solicitudes de URL. CodeIgniter Routing hace coincidir la URL con las rutas predefinidas. Si no se encuentra ninguna coincidencia de ruta, CodeIgniter genera una excepción de página no encontrada.
  • Control – las rutas están vinculadas a los controladores. Los controladores pegan los modelos y las vistas. La solicitud de datos/lógica de negocios del modelo y devolver los resultados a través de la presentación de vistas. Una vez que una URL se ha asociado con una ruta en CodeIgniter, se reenvía a una función pública del controlador que interactúa con la fuente de datos, la lógica empresarial y devuelve la vista que muestra los resultados.
  • Vistas – las vistas son responsables de la presentación. Una vista suele ser una combinación de HTML, CSS y JavaGuiónEsta es la parte responsable de mostrar la página web al usuario. Normalmente, los datos que se muestran se obtienen de la base de datos o de cualquier otra fuente de datos disponible.

Para aprender a implementar enrutadores en un proyecto del mundo real, supondremos que estamos creando una aplicación para administrar detalles de contacto. La siguiente tabla muestra las URL con las que trabajaremos.

S / N Enlance Ruta Control Método
1 / $ruta['default_controller'] Te damos la bienvenida índice
2 / contactos $ruta['contactos'] Contactos índice
3 /contactos/crear $ruta['crear'] Contactos Para crear
4 /contactos/editar/id $ruta['editar/:id'] Contactos editar
5 /contactos/actualización/id $ruta['actualización/:id'] Contactos actualización
6 /contactos/eliminar/id $ruta['eliminar/:id'] Contactos borrar

Crearemos las rutas de nuestra aplicación basándonos en la tabla anterior. Hemos definido las URL, la ruta de CodeIgniter y las hemos asignado a los respectivos nombres de controlador y método.

Crear enrutamiento URL para la aplicación

Creemos el enrutamiento de URL CodeIgniter para nuestro proyecto tutorial.

Abra aplicación/config/routes.php

Modificar las rutas para que coincidan con lo siguiente

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

AQUÍ,

  • $ruta['default_controller'] = 'bienvenido'; define el controlador predeterminado Bienvenido.
  • $ruta['contactos'] = 'contactos'; define una ruta de contactos que llama al método de índice en el controlador de contactos
  • $ruta['crear'] = 'contactos/crear'; define una ruta de creación que apunta al controlador de Contactos y llama al método de creación.
  • $ruta['edit/:id'] = 'contactos/editar'; define una edición de ruta que acepta un parámetro de id y apunta al método de edición del controlador de contactos
  • $ruta['actualización/:id'] = 'contactos/actualización'; define una actualización de ruta que acepta un parámetro de id y apunta al método de actualización de la clase Contactos.
  • $ruta['delete/:id'] = 'contactos/eliminar'; define una eliminación de ruta que acepta un parámetro de id y apunta al método de eliminación del controlador de Contactos.

La siguiente tabla muestra las respectivas URL derivadas de las rutas definidas anteriormente.

S / N Ruta URL correspondiente
1 $ruta['default_controller'] = 'bienvenido'; http://localhost:3000
2 $ruta['contactos'] = 'contactos'; http://localhost:3000/contacts
3 $ruta['crear'] = 'contactos/crear'; http://localhost:3000/contacts/create
4 $ruta['edit/:id'] = 'contactos/editar'; http://localhost:3000/contacts/edit/1
5 $ruta['actualización/:id'] = 'contactos/actualización'; http://localhost:3000/contacts/update/1
6 $ruta['delete/:id'] = 'contactos/eliminar'; http://localhost:3000/contacts/delete/1

Ahora que hemos cubierto las rutas, creemos el controlador de Contactos que responderá a las acciones especificadas en las rutas.

Cree un nuevo archivo de ruta en CodeIgniter como Contacts.php en application/controllers/Contacts.php

Añade el siguiente código

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Contacts extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('url');
    }

    public function index() {
        $this->load->view('header');
        $this->load->view('contacts/index');
        $this->load->view('footer');
    }

    public function create() {
        $this->load->view('header');
        $this->load->view('contacts/create');
        $this->load->view('footer');
    }

    public function edit($id) {
        $this->load->view('header');
        $this->load->view('contacts/edit');
        $this->load->view('footer');
    }

    public function update($id) {
        $this->load->view('header');
        $this->load->view('contacts/update');
        $this->load->view('footer');
    }

    public function delete($id) {
        $this->load->view('header');
        $this->load->view('contacts/delete');
        $this->load->view('footer');
    }
}

AQUÍ,

  • Los contactos de clase extienden CI_Controller {..} define nuestra clase de controlador y extiende la clase CI_Controller que viene con CodeIgniter.
  • Los métodos definidos anteriormente corresponden a las rutas que definimos y aquellos con parámetros como eliminar aceptan un parámetro de $id
  • Observe que las funciones cargan tres (3) vistas. El encabezado y el pie de página son comunes para todos los métodos. La vista intermedia es muy específica de la acción, es decir, eliminar para eliminar la función, crear una vista para crear una función, etc. Otra cosa importante para recordar es que las vistas se cargan desde el subdirectorio de contactos.

Vistas de CodeIgniter

Todavía tenemos que dar un paso más antes de poder probar nuestras rutas CodeIgniter con parámetros en el navegador web. Creemos las vistas correspondientes a los métodos de controlador anteriores.

La siguiente imagen muestra cómo se verá su aplicación

Vistas de CodeIgniter

Cree los siguientes archivos en application/views

header.php – this file will contain contacts app menu and the header
footer.php – this files will contain the application footer.

Cree un nuevo directorio de contactos en la aplicación de vistas/vistas/contactos

Crea los siguientes archivos dentro

index.php
create.php
edit.php

La estructura de su archivo debe ser la siguiente

Vistas de CodeIgniter

Actualicemos ahora el header.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>CodeIgniter Routes</title>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
        <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
    </head>
    <body>
        <section class="section">
            <div class="container">
                <h1 class="title">CI Contacts v1</h1>
                <h2 class="subtitle">CodeIgniter contacts management app</h2>
                <div class="columns">
                    <div class="column is-one-quarter">
                        <aside class="menu">
                            <p class="menu-label">
                                General
                            </p>
                            <ul class="menu-list">
                                <li><a class="is-active" href="#">Dashboard</a></li>
                                <li><a href="<?=site_url('contacts/create')?>">New Contact</a></li>
                                <li><a href="<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li>
                            </ul>
                            <p class="menu-label">
                                Settings
                            </p>
                            <ul class="menu-list">
                                <li><a href="#">SMS</a></li>
                                <li><a href="#">Email</a></li>
                            </ul>
                        </aside>
                    </div>

AQUÍ,

  • El código HTML anterior carga CSS de Birmania desde una red CDN.

El siguiente es el código para footer.php

            </div>
            </div>
        </section>
    </body>
</html>

Ahora agreguemos el código para los archivos index.php, edit.php y create.php para contactos.

index.php
<div class="column">Index content goes here...</div>
edit.php
<div class="column">Edit content goes here...</div>
create.php
<div class="column">Create content goes here...</div>

Puede guardar todos los cambios que se han realizado.

Abra la siguiente URL en su navegador web http://localhost:3000/contacts/

puede hacer clic en los enlaces Nuevo contacto y Editar contacto y ver qué sucede

Resum

  • Las rutas en CI son responsables de responder a las solicitudes de URL. El enrutamiento hace coincidir la URL con las rutas predefinidas. Si no se encuentra ninguna coincidencia de ruta de CodeIgniter, CodeIgniter genera una excepción de página no encontrada.
  • CI Routing es responsable de responder a las solicitudes de URL. El enrutamiento hace coincidir la URL con las rutas predefinidas.
  • Los controladores pegan los modelos y las vistas. La solicitud de datos/lógica de negocios del modelo y devolver los resultados a través de la presentación de vistas.
  • Las vistas son responsables de la presentación. Una vista suele ser una combinación de HTML, CSS y JavaGuión.
  • En este tutorial, aprendimos cómo crear rutas en CodeIgniter para una aplicación de ejemplo del mundo real y cubrimos los conceptos básicos de enrutamiento que necesita saber para comenzar a desarrollar CodeIgniter.