Foros del Web » Programando para Internet » PHP » CodeIgniter »

[SOLUCIONADO] CodeIgniter - Callback_

Estas en el tema de CodeIgniter - Callback_ en el foro de CodeIgniter en Foros del Web. Hola. Estoy empezando con codeIgniter, y cuando utilizo set_rules, no me valida nada ... Desde el formulario generado si que llama a la función "validacion", ...
  #1 (permalink)  
Antiguo 02/07/2014, 14:40
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta CodeIgniter - Callback_

Hola. Estoy empezando con codeIgniter, y cuando utilizo set_rules, no me valida nada ... Desde el formulario generado si que llama a la función "validacion", pero cuando le indico en set_rules, la función para que valide el nombre, aunque está definida no accede a ella. Las funciones definidas en Controler son estas dos:

public function validacion(){
$this->load->library('form_validation');

$this->form_validation->set_rules('NombreFoto','Error nombre','callback_validarnombre');

$this->form_validation->set_message('validar nombre','el nombre es obligatorio');




}


function validarnombre(){
echo "vengo a validar_nombre";
}

¿Alguna idea?

Gracias.
  #2 (permalink)  
Antiguo 02/07/2014, 15:23
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: CodeIgniter set_rules callback_

checa la documentación en el manual: http://ellislab.com/codeigniter/user...html#callbacks tiene un ejemplo

Recuerda que la función que uses como callback debe de retornar verdadero si todo esta bien, si no, falso con el mensaje de error. Revisa el ejemplo
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 02/07/2014, 15:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: CodeIgniter - Callback_

Cita:
¿Alguna idea?
La más obvia, lee el manual: http://ellislab.com/codeigniter/user...alidation.html
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 02/07/2014, 15:56
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: CodeIgniter - Callback_

El manual ya lo leí, lo probé y no me funcionó. Por eso, en última instancia tiro de la experiencia de gente que sabe, y por eso he reducido el código hasta dejarlo en lo mínimo.
  #5 (permalink)  
Antiguo 02/07/2014, 15:56
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: CodeIgniter set_rules callback_

El manual ya lo leí, lo probé y no me funcionó. Por eso, en última instancia tiro de la experiencia de gente que sabe, y por eso he reducido el código hasta dejarlo en lo mínimo.
  #6 (permalink)  
Antiguo 02/07/2014, 16:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: CodeIgniter - Callback_

¿De verdad leíste el manual?

Porque vamos, la función callback debe ser un método de tu controlador y no una función global.

Código PHP:
Ver original
  1. <?php
  2.  
  3. class Form extends CI_Controller {
  4.  
  5.     public function index()
  6.     {
  7.         $this->load->helper(array('form', 'url'));
  8.  
  9.         $this->load->library('form_validation');
  10.  
  11.         $this->form_validation->set_rules('username', 'Username', 'callback_username_check');
  12.         $this->form_validation->set_rules('password', 'Password', 'required');
  13.         $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
  14.         $this->form_validation->set_rules('email', 'Email', 'required|is_unique[users.email]');
  15.  
  16.         if ($this->form_validation->run() == FALSE)
  17.         {
  18.             $this->load->view('myform');
  19.         }
  20.         else
  21.         {
  22.             $this->load->view('formsuccess');
  23.         }
  24.     }
  25.  
  26.     public function username_check($str)
  27.     {
  28.         if ($str == 'test')
  29.         {
  30.             $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
  31.             return FALSE;
  32.         }
  33.         else
  34.         {
  35.             return TRUE;
  36.         }
  37.     }
  38.  
  39. }
  40. ?>

Y eso se lee perfectamente en el manual, por eso pregunto, ¿qué cosa entendiste?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 02/07/2014, 16:17
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: CodeIgniter set_rules callback_

Tu "reducción" de código no va a funcionar; el código mínimo para el manejo de formularios en CI es:
Código PHP:
Ver original
  1. class Form extends CI_Controller {
  2.  
  3.     function index()
  4.     {
  5.         $this->load->helper(array('form', 'url'));
  6.  
  7.         $this->load->library('form_validation');
  8.  
  9.         if ($this->form_validation->run() == FALSE)
  10.         {
  11.             $this->load->view('myform');
  12.         }
  13.         else
  14.         {
  15.             $this->load->view('formsuccess');
  16.         }
  17.     }
  18. }

A partir de ese código y el formulario de ejemplo:
Código HTML:
Ver original
  1. <title>My Form</title>
  2. </head>
  3.  
  4. <?php echo validation_errors(); ?>
  5.  
  6. <?php echo form_open('form'); ?>
  7.  
  8. <h5>Username</h5>
  9. <input type="text" name="username" value="" size="50" />
  10.  
  11. <h5>Password</h5>
  12. <input type="text" name="password" value="" size="50" />
  13.  
  14. <h5>Password Confirm</h5>
  15. <input type="text" name="passconf" value="" size="50" />
  16.  
  17. <h5>Email Address</h5>
  18. <input type="text" name="email" value="" size="50" />
  19.  
  20. <div><input type="submit" value="Submit" /></div>
  21.  
  22. </form>
  23.  
  24. </body>
  25. </html>

Debes de hacer tus pruebas
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 02/07/2014, 16:18
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: CodeIgniter - Callback_

Pues eso es lo que he hecho. Ahora he eliminado el código que tenia en la function validación, y lo he dejado como está en el ejemplo del manual ... colocándo el código en "index" y en la funcion definida como callback, dejándolo de esta manera:

<?php
class c_fotos extends CI_Controller{

public function validacion(){
}



public function index(){

$this->load->helper(array('form', 'url'));

$this->load->library('form_validation');

$this->form_validation->set_rules('NombreFoto','Error nombre','callback_validarnombre');
$this->form_validation->set_message('validar nombre','el nombre es obligatorio');

if ($this->form_validation->run() == FALSE)
{
$this->load->view('v_pantalla_inicial');
}
else
{
}





}

public function validarnombre($pCadena){
if (strlen(trim($pCadena))==0){
$this->form_validation->set_message('validar_nombre', 'Longitud cero no permitida');
return FALSE;
}
else{
return TRUE;
}
}



}
?>



Lo que ahora, no tengo claro como realizar la validación, ya que en la vista, se genera un form cuyo submit remite a la funcion validacion, pero evidentemente ahí ahora no hay nada y si lo cambio y pongo que vaya a "validarnombre" me da una serie de errores, de que falta definir un parámetro ...

Etiquetas: callback, python
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:56.