En desarrollo web para un proceso de este tipo puede ser muy familiar:
- Abra una página web que muestra el formulario.
- Usuarios rellene y envíe el formulario.
- Si un usuario envía alguna información no válida, o que haya perdido un elemento necesario, el formulario será junto con los datos del usuario y la descripción del error del problema para volver.
- Los usuarios rellenan de nuevo para continuar el proceso paso anterior hasta la presentación de una forma válida.
En el extremo receptor, el guión debe:
- Compruebe los datos de formularios enviados por los usuarios.
- Verifique si los datos son del tipo correcto, la norma adecuada. Por ejemplo, si se envía un nombre de usuario, se debe verificar si contiene sólo caracteres permitidos. Debe tener una longitud mínima no puede exceder la longitud máxima. Nombre de usuario no puede ya existir con otros a duplicar el nombre de usuario, o incluso una palabra reservada y así sucesivamente.
- Filtrado de datos y limpiar el carácter inseguro que garantiza un procesamiento lógico de datos recibido es seguro.
- Si es necesario, los datos pre-formateados (o lagunas en los datos deberán ser liquidadas a través de la codificación HTML, etc.)
- Preparación de los datos en la base de datos.
Mientras que el proceso anterior no es muy complejo, pero en general tienen que escribir mucho código, y con el fin de mostrar un mensaje de error en la página a menudo utilizar una variedad de diferentes estructuras de control. Cree una validación de formularios, aunque fácil de implementar aburrido.
Para los desarrolladores, el proceso de desarrollo en general es muy compleja, y en su mayoría están repitiendo el mismo trabajo. Suponiendo un proyecto de escenarios de repente necesita agregar un formulario de datos, luego el código de locales de todo el proceso tiene que ser modificado. Sabemos que van dentro de una estructura es una estructura de datos común, por lo beego la forma struct utiliza para procesar la información del formulario.
Primero defina unas aplicaciones web desarrollo struct correspondientes, un campo corresponde a un elemento de formulario, a través del código struct para definir la información y la información de autenticación elemento correspondiente, de la siguiente manera:
type User struct{
Username string `form:text,valid:required`
Nickname string `form:text,valid:required`
Age int `form:text,valid:required|numeric`
Email string `form:text,valid:required|valid_email`
Introduce string `form:textarea`
}
Struct definido de esta manera después de la siguiente operación en el controlador
func (this *AddController) Get() {
this.Data["form"] = beego.Form(&User{})
this.Layout = "admin/layout.html"
this.TplNames = "admin/add.tpl"
}
Este formulario se muestra en la plantilla
<h1>New Blog Post</h1>
<form action="" method="post">
{{.form.render()}}
</form>
Por encima de todo se definió el primer paso para mostrar el formulario en el proceso de estructura, el siguiente paso es que el usuario complete la información, a continuación, compruebe que el servidor recibe los datos, y finalmente en la base de datos.
func (this *AddController) Post() {
var user User
form := this.GetInput(&user)
if !form.Validates() {
return
}
models.UserInsert(&user)
this.Ctx.Redirect(302, "/admin/index")
}
La siguiente lista con la información correspondiente elemento de formulario:
<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
<tbody>
<tr>
<th>Name</th>
<th>parameter</th>
<th>Description</th>
</tr>
<tr>
<td class="td"><strong>text</strong>
</td>
<td class="td">No</td>
<td class="td">textbox input box</td>
</tr>
<tr>
<td class="td"><strong>button</strong>
</td>
<td class="td">No</td>
<td class="td">button</td>
</tr>
<tr>
<td class="td"><strong>checkbox</strong>
</td>
<td class="td">No</td>
<td class="td">multi-select box</td>
</tr>
<tr>
<td class="td"><strong>dropdown</strong>
</td>
<td class="td">No</td>
<td class="td">drop-down selection box</td>
</tr>
<tr>
<td class="td"><strong>file</strong>
</td>
<td class="td">No</td>
<td class="td">file upload</td>
</tr>
<tr>
<td class="td"><strong>hidden</strong>
</td>
<td class="td">No</td>
<td class="td">hidden elements</td>
</tr>
<tr>
<td class="td"><strong>password</strong>
</td>
<td class="td">No</td>
<td class="td">password input box</td>
</tr>
<tr>
<td class="td"><strong>radio</strong>
</td>
<td class="td">No</td>
<td class="td">single box</td>
</tr>
<tr>
<td class="td"><strong>textarea</strong>
</td>
<td class="td">No</td>
<td class="td">text input box</td>
</tr>
</tbody>
</table>
La siguiente lista puede ser utilizada se enumeran normas orígenes:
<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
<tbody>
<tr>
<th>rules</th>
<th>parameter</th>
<th>Description</th>
<th>Example</th>
</tr>
<tr>
<td class="td"><strong>required</strong>
</td>
<td class="td">No</td>
<td class="td">Si el elemento está vacío, se devuelve FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>matches</strong>
</td>
<td class="td">Yes</td>
<td class="td">si el valor del elemento de formulario con los valores de los parámetros de campo de formulario correspondientes no son iguales, entonces retorna FALSE</td>
<td class="td">matches [form_item]</td>
</tr>
<tr>
<td class="td"><strong>is_unique</strong>
</td>
<td class="td">Yes</td>
<td class="td">si el valor del elemento de formulario con el campo especificado en una tabla tiene datos duplicados, devuelve falso (Traductor de
Nota: Por ejemplo is_unique [user.email], entonces la clase de validación buscará la tabla de usuario en el
Campo Email no hay elementos de formulario con el mismo valor, como la repetición de depósito, devuelve false, por lo que
los desarrolladores no tienen que escribir otro código de verificación de devolución de llamada.)</td>
<td class="td">is_unique [table.field]</td>
</tr>
<tr>
<td class="td"><strong>min_length</strong>
</td>
<td class="td">Yes</td>
<td class="td">form si la longitud de caracteres es inferior a los parámetros de número definido, devuelve false</td>
<td class="td">min_length [6]</td>
</tr>
<tr>
<td class="td"><strong>max_length</strong>
</td>
<td class="td">Yes</td>
<td class="td">si el valor del elemento del formulario es mayor que la longitud del argumento numérico carácter definido, devuelve
False</td>
<td class="td">max_length [12]</td>
</tr>
<tr>
<td class="td"><strong>exact_length</strong>
</td>
<td class="td">Yes</td>
<td class="td">if the form element values and parameters defined character length number does not match, it returns FALSE</td>
<td class="td">exact_length [8]</td>
</tr>
<tr>
<td class="td"><strong>greater_than</strong>
</td>
<td class="td">Yes</td>
<td class="td">si los valores de los elementos de formulario y parámetros definidos número longitud de caracteres no coinciden, devuelve FALSE</td>
<td class="td">greater_than [8]</td>
</tr>
<tr>
<td class="td"><strong>less_than</strong>
</td>
<td class="td">Yes</td>
<td class="td">Si el elemento de formulario valora tipos no numéricos, o menos que el valor de los parámetros definidos, devuelve FALSE</td>
<td class="td">less_than [8]</td>
</tr>
<tr>
<td class="td"><strong>alpha</strong>
</td>
<td class="td">No</td>
<td class="td">Si el elemento de formulario valora tipos no numéricos, o mayor que los parámetros definidos de valor, devuelve FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>alpha_numeric</strong>
</td>
<td class="td">No</td>
<td class="td">Si el valor de elemento de formulario contiene caracteres que no sean letras, además, devuelve FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>alpha_dash</strong>
</td>
<td class="td">No</td>
<td class="td">Si los valores de los elementos de formulario contiene además de letras y otros caracteres que no sean números, devuelve FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>numeric</strong>
</td>
<td class="td">No</td>
<td class="td">Si el valor del elemento de formulario contiene además de las letras / números / Subrayado / caracteres distintos de tablero,
devuelve FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>integer</strong>
</td>
<td class="td">No</td>
<td class="td">excepto si el elemento de formulario contiene caracteres distintos de un entero, se devuelve FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>decimal</strong>
</td>
<td class="td">Yes</td>
<td class="td">Si el formulario de elemento de tipo (no decimal) no está completa, devuelve FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>is_natural</strong>
</td>
<td class="td">No</td>
<td class="td">si el elemento de formulario contiene una serie de otros valores naturales (otros valores excepto el cero), se
devuelve FALSO. Números naturales como este:. 0,1,2,3 .... y así sucesivamente.</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>is_natural_no_zero</strong>
</td>
<td class="td">No</td>
<td class="td">si el elemento de formulario contiene un número de otros valores no naturales (otros valores incluyendo el cero), se
devuelve FALSO. Los números no nulos naturales:. 1,2,3 ..... y así sucesivamente.</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>valid_email</strong>
</td>
<td class="td">No</td>
<td class="td">Si el valor de elemento de formulario contiene la dirección de correo electrónico válida, returns FALSE</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>valid_emails</strong>
</td>
<td class="td">No</td>
<td class="td">si cualquier valor contiene la dirección de email no es válida (direcciones separadas por comas en Inglés
), returns FALSE.</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>valid_ip</strong>
</td>
<td class="td">No</td>
<td class="td"> si el valor del elemento de formulario no es una dirección IP válida returns FALSE.</td>
<td class="td"></td>
</tr>
<tr>
<td class="td"><strong>valid_base64</strong>
</td>
<td class="td">No</td>
<td class="td">si el valor del elemento de formulario contiene los caracteres codificados en base64, además de otros que los personajes,
returns FALSE.</td>
<td class="td"></td>
</tr>
</tbody>
</table>
- Directory
- Previous section: Session
- Next section: User validation