⊗ppPmSDRt 444 of 447 menu

Enrutamiento simple en un motor en PHP

En la lección anterior en nuestro sitio solo había un grupo de URLs. Por supuesto, normalmente un sitio web tiene varios tipos de direcciones.

Cada grupo de direcciones será procesado por su propia expresión regular, que se llaman rutas. En consecuencia, el proceso de coincidencia de rutas y código para su procesamiento se llama enrutamiento.

Supongamos, por ejemplo, que tenemos dos tipos de direcciones. Escribamos una ruta para cada grupo:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // una página por slug } if (preg_match('#^/page/all$#', $url, $params)) { // lista de todas las páginas } ?>

Para mayor comodidad, saquemos el código de procesamiento de cada ruta a un archivo separado:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } ?>

Los archivos incluidos deben devolver como resultado un array con el título y el contenido de la página.

Escribamos el código del primer archivo, que muestra una página por su slug:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

Y ahora escribamos el código del segundo archivo, que muestra una lista de enlaces a todas las páginas:

<?php $query = "SELECT slug, title FROM pages"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'todas las páginas', 'content' => $content ]; return $page; ?>

Después de ejecutar una de las condiciones, en la variable $page siempre habrá un array de una estructura. Usemos este array para insertar el título y el contenido en la plantilla del sitio:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Juntemos todo y obtendremos el siguiente código:

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Supongamos que tienes un sitio con usuarios. Crea una página para mostrar un usuario, una página para mostrar todos los usuarios y una página con un formulario para agregar un nuevo usuario.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar