2012-06-30 21 views
5

¿Hay algún archivo en codeIgniter en el que pueda editar para poder personalizar los mensajes de validación de formulario?Cómo personalizar los errores de validación de formulario en codeIgniter

enter image description here

sólo quiero colocarlos en una lista con viñetas para consumir menos espacio.

Aquí está el código que estoy usando para dar salida a los mensajes de error:

<div class="alert <?php echo $alert['alert_type']; ?> min-form"> 
     <button type="button" class="close" data-dismiss="alert">x</button> 
     <h4><?php echo $alert['main_message']; ?></h4> 
     <?php echo $alert['sub_message']; ?> 
</div> 

Básicamente, el $alert['sub_message'] es sólo conseguir sus datos de validation_errors() función de CodeIgniter que da salida a los errores de validación de un formulario.

+0

Si no lo ha hecho, me gustaría sugerir un lado del cliente la capa de validación también, por lo que la capa CodeIgniter solo se ve si de alguna manera todavía pueden enviar el formulario. –

+0

Además, consultaría los documentos de CI: [Devolución de llamada: sus propias funciones de validación] (http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks). –

+0

@JaredFarrish Gracias, ya tengo la validación del lado del cliente con LiveValidation http://livevalidation.com/ –

Respuesta

8

Puede extender la clase form_validation para el máximo control mediante la creación de application/libraries/MY_form_validation.php para agregar reglas de validación adicionales - Me he adjuntado un ejemplo a continuación.

Es una mala práctica editar directamente las bibliotecas del sistema; CI proporciona mejores opciones (sobrescribe/personalización a través de MY_ clases, libraries, hooks, etc.). Esto le da la ventaja de actualizar fácilmente las versiones de CI. & mantiene su aplicación portátil/código personalizado aislado del marco principal.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

/** 
* CodeIgniter Form Validation Extension 
*/ 
class MY_Form_validation extends CI_Form_validation { 

    /** 
    * MY_Form_validation::valid_url 
    * @abstract Ensures a string is a valid URL 
    */ 
    function valid_url($url) { 
     if(preg_match("/^http(|s):\/{2}(.*)\.([a-z]){2,}(|\/)(.*)$/i", $url)) { 
      if(filter_var($url, FILTER_VALIDATE_URL)) return TRUE; 
     } 
     $this->CI->form_validation->set_message('valid_url', 'The %s must be a valid URL.'); 
     return FALSE; 
    } 

    /** 
    * MY_Form_validation::alpha_extra() 
    * @abstract Alpha-numeric with periods, underscores, spaces and dashes 
    */ 
    function alpha_extra($str) { 
     $this->CI->form_validation->set_message('alpha_extra', 'The %s may only contain alpha-numeric characters, spaces, periods, underscores & dashes.'); 
     return (! preg_match("/^([\.\s-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE; 
    } 

    /** 
    * MY_Form_validation::numeric_comma() 
    * @abstract Numeric and commas characters 
    */ 
    function numeric_comma($str) { 
     $this->CI->form_validation->set_message('numeric_comma', 'The %s may only contain numeric & comma characters.'); 
     return (! preg_match("/^(\d+,)*\d+$/", $str)) ? FALSE : TRUE; 
    } 

    /** 
    * MY_Form_validation::matches_pattern() 
    * @abstract Ensures a string matches a basic pattern 
    */ 
    function matches_pattern($str, $pattern) { 
     if (preg_match('/^' . $pattern . '$/', $str)) return TRUE; 
     $this->CI->form_validation->set_message('matches_pattern', 'The %s field does not match the required pattern.'); 
     return FALSE; 
    } 

} 

/* End of file MY_form_validation.php */ 
/* Location: ./{APPLICATION}/libraries/MY_form_validation.php */ 
0

Tome un vistazo a sistema/lenguaje/Inglés/form_validation_lang.php

Creo que se puede o bien editarlo o copiarlo en application/lenguaje/Inglés/form_validation_lang.php

+0

extendiéndola es correcta, pero la edición de 'sistema /' es un no no;) – sekati

+0

Podemos tener una copia del mismo archivo de aplicación '/ idioma/Inglés carpeta de idioma/form_validation_lang.php' (de applicatoin) y hacer que cualquier personalización querer – masterFly

-8

En para validar los controles DevExpress en la página utilizando JavaScript, utilice el siguiente código:

ASPxClientEdit.ValidateGroup(null); 

o

ASPxClientEdit.ValidateGroup('validationgroup'); 
2

Puede usar <?php echo form_error('field name', '<div class="error">', '</div>'); ?> para mostrar los errores individualmente.

Documentation

2

Puede cambiar los delimitadores de <div>-<li> mediante el uso de la función de CodeIgniter set_error_delimiters:

$this->form_validation->set_error_delimiters('<li>', '</li>'); 

que debe hacer esto inmediatamente después de cargar la clase formulario de validación.

Esto cambiará la forma en que se muestran validation_errors()yform_error('field_name').Por lo que tendrá que añadir ul o ol de la siguiente manera:

echo '<ul>' . validation_errors() . '</ul>'; 
1

Al igual que las respuestas anteriores, sólo por si desea con arranque:

<ul> 
<?php echo validation_errors('<li><span class="label label-danger">', '</span></li>'); ?> 
</ul> 
Cuestiones relacionadas