Te sugiero que escribas algo así como las siguientes funciones basadas en los ayudantes de Zend_View.
formText($name, $value = null, array $attribs = null)
formPassword($name, $value = null, array $attribs = null)
formLabel($id, $text, array $attribs = null)
formHidden($name, $value = null, array $attribs = null)
formSubmit($name = null, $text = null, array $attribs = null)
formSelect($name, $selected, array $attribs = null, array $options = null)
formCheckbox($name, $default, array $attribs = null, array $options = null)
Entonces nunca más olvidará/se perderá algo así.
<form method="POST" action="<?php echo $PHP_SELF; ?>
<p>
<?php
echo formLabel('login_email', 'Email'), ':',
formText('login_email');
?>
</p>
<p>
<?php
echo formLabel('login_password', 'Password'), ':',
formPassword('login_password');
?>
</p>
<p>
<?php
echo formCheckbox('login_remember'), ' ',
formLabel('login_remember', 'Remember me');
?>
</p>
<p>
<?php
echo formSubmit(null, 'Login');
?>
</p>
</form>
Consejo:
- Si ID no está definido en attribs, id es el mismo que el nombre, a excepción de las etiquetas que se utilizan id en el atributo para = "$ id" y formHidden no debe tener una identificación predeterminada cualquiera.
- formCheckbox escribe un formHidden por el mismo nombre que el anterior con el valor negativo, por lo que obtienes un valor de retorno si la casilla no está marcada también.
- formCheckbox options es una matriz con los valores marcados o no.
- Utilice un filtro con FILTER_VALIDATE_BOOLEAN para leer el valor de retorno de una casilla de verificación para comprobar si está marcado o no.
En realidad, creo que es válido dejar el nombre de la acción. Si lo hace, el navegador simplemente publica/llega a la página actual. –
La mayoría de los navegadores muestran este comportamiento, pero de acuerdo con las especificaciones oficiales, se requiere el atributo de acción - http://www.w3.org/TR/html401/interact/forms.html. – BrynJ
Gracias por la aclaración. Estoy de acuerdo en que es una mala idea expresar ese tipo de ambigüedad cuando la especificación no define un comportamiento predeterminado. –