Ver índice de contenidos del libro

4.2. Obteniendo información del usuario a través de formularios

Los formularios constituyen un buen método para obtener información del usuario. Diseñar formularios y sus elementos en HTML a veces puede ser tedioso, especialmente si se quieren obtener páginas que validen en XHTML. Se pueden incluir elementos de formulario en las plantillas de Symfony de manera tradicional, como se muestra en el Listado 4-8, pero Symfony provee helpers que hacen mucho más sencilla esta tarea.

Listado 4-8 - Las plantillas pueden incluir código HTML tradicional

<p>¡Hola, Mundo!</p>
<?php if ($hora >= 18): ?>
<p>Quizás debería decir buenas tardes. Ya son las <?php echo $hora ?>.</p>
<?php endif; ?>
<form method="post" action="/miaplicacion_dev.php/mimodulo/otraAccion">
  <label for="nombre">¿Cómo te llamas?</label>
  <input type="text" name="nombre" id="nombre" value="" />
  <input type="submit" value="Ok" />
</form>

Un helper es una función PHP definida por Symfony y que está pensada para ser utilizada en las plantillas. Los helpers generan código HTML y normalmente resultan más eficientes que escribir a mano ese mismo código HTML. Usando los helpers de Symfony, se puede obtener el resultado del Listado 4-8 con el código que se muestra en el Listado 4-9.

Listado 4-9 - Es más rápido y simple utilizar helpers que utilizar etiquetas HTML

<p>¡Hola, Mundo!</p>
<?php if ($hora >= 18): ?>
<p>Quizás debería decir buenas tardes. Ya son las <?php echo $hora ?>.</p>
<?php endif; ?>
<?php echo form_tag('mimodulo/otraAccion') ?>
  <?php echo label_for('nombre', '¿Cómo te llamas?') ?>
  <?php echo input_tag('nombre') ?>
  <?php echo submit_tag('Ok') ?>
</form>

Por otra parte, el uso de etiquetas cortas de apertura (<?=, equivalente a <?php echo) no se recomienda para aplicaciones web profesionales, debido a que el servidor web de producción puede ser capaz de entender más de un lenguaje de script, y por tanto, confundirse. Además, las etiquetas cortas de apertura no funcionan con la configuración por defecto de PHP y necesitan de ajustes en el servidor para ser activadas. Por último, a la hora de lidiar con XML y validación, fallará inmediatamente porque <? tiene un significado especial en XML.

Los formularios merecen un capítulo completo para ellos, ya que Symfony provee muchas herramientas, sobre todo helpers, para facilitar tu trabajo. En el capítulo 10 aprenderás todo sobre estos helpers.