Twig es un motor de plantillas para PHP que se utiliza en phpMyFAQ para separar la lógica de la presentación. Esto permite que el código sea más limpio y fácil de mantener. Veamos cómo funciona Twig en phpMyFAQ y pongamos un ejemplo práctico.
Estructura de Twig
- Twig utiliza una sintaxis de plantillas que permite incluir variables, bucles, condiciones y más.
- Las plantillas de Twig tienen la extensión <code class="qlv4I7skMF6Meluz0u8c wZ4JdaHxSAhGy1HoNVja _dJ357tkKXSh_Sup5xdW">.twgcode> y se encuentran en la carpeta de plantillas de tu tema.
Variables
- Puedes acceder a variables pasadas desde el controlador de PHP a la plantilla Twig. Por ejemplo, si tienes una variable <code class="qlv4I7skMF6Meluz0u8c wZ4JdaHxSAhGy1HoNVja _dJ357tkKXSh_Sup5xdW">$categoriescode> en PHP, puedes acceder a ella en Twig como <code class="qlv4I7skMF6Meluz0u8c wZ4JdaHxSAhGy1HoNVja _dJ357tkKXSh_Sup5xdW">{{ categories }}code>.
Condicionales
- Twig permite usar condicionales para mostrar contenido basado en ciertas condiciones. Por ejemplo:
<code class="language-twig">{% if categories %} <p>Hay categorías disponibles.p> {% else %} <p>No hay categorías.p> {% endif %} code>
Bucles
- Puedes iterar sobre arrays o colecciones usando bucles. Por ejemplo:
<code class="language-twig">{% for category in categories %} <h2>{{ category.name }}h2> {% endfor %} code>
Filtros
- Twig ofrece filtros para modificar la salida de las variables. Por ejemplo, <code class="qlv4I7skMF6Meluz0u8c wZ4JdaHxSAhGy1HoNVja _dJ357tkKXSh_Sup5xdW">{{ variable|upper }}code> convierte el texto a mayúsculas.
Funciones
- Puedes usar funciones integradas de Twig para tareas comunes, como <code class="qlv4I7skMF6Meluz0u8c wZ4JdaHxSAhGy1HoNVja _dJ357tkKXSh_Sup5xdW">dump()code> para depurar variables.
Ejemplo práctico
Imaginemos que quieres mostrar una lista de categorías en la página de inicio de phpMyFAQ. Aquí tienes un ejemplo de cómo se vería el código en PHP y en Twig.
Código PHP (Controlador)
<code class="language-php">// Supongamos que este es el controlador que carga las categorías
$categories = [
['name' => 'Categoría 1', 'url' => 'categoria1.php'],
['name' => 'Categoría 2', 'url' => 'categoria2.php'],
['name' => 'Categoría 3', 'url' => 'categoria3.php'],
];
// Renderiza la plantilla Twig
echo $twig->render('startpage.twg', ['categories' => $categories]);
code>
Código Twig (startpage.twg)
<code class="language-html">{% if categories %} <div class="row"> {% for category in categories %} <div class="col"> <h2>{{ category.name }}</h2> <a href="{{ category.url }}">Ir a la categoría</a> </div> {% endfor %} </div> {% else %} <p>No hay categorías disponibles.</p> {% endif %}code>
Explicación del ejemplo
- PHP: Se define un array de categorías y se pasa a la plantilla Twig.
- Twig: Se verifica si hay categorías. Si las hay, se itera sobre cada categoría y se muestra su nombre y un enlace. Si no hay categorías, se muestra un mensaje alternativo.
Conclusión
Twig facilita la creación de plantillas limpias y organizadas en phpMyFAQ. Al separar la lógica de la presentación, puedes mantener tu código más ordenado y fácil de modificar.