Hacer callbacks a la Base de datos desde MY_Form_validation --Codeigniter--PHP--
Hola amigos, un saludo especial para todos
Este artículo nace por la necesidad de que he buscado en todos lados la solución a un tema que tenía con los callbacks de codeigniter, lo que me pasaba es que por mas que buscaba e intentaba una regla en especial no hacía el llamado a mi funcion con un callback así que busqué por todos los medios y lo solucioné de la siguiente manera:
Lo que pasa es que al hacer mi conjunto de reglas en el form_validation:
array(
'field' => 'username',
'label' => 'Usuario',
'rules' => 'trim|required|callback_username_check|valid_email'
),
Hacía lo que hacía no llamaba a la función "username_check", para esto se tiene que crear dentro de:
Se crea un archivo llamado "MY_Form_validation.php" de la siguiente manera:
<?php
class MY_Form_validation extends CI_Form_validation {
public function __construct($rules = array()) {
parent::__construct($rules);
$this->ci = & get_instance();
$this->ci->load->model('usuarios_model');
}
function username_check($str) {
if ($this->ci->usuarios_model->check_email($str)) {
$this->ci->form_validation->set_message('check_email', 'El correo ' . $str . 'ya se encuentra registrado');
return FALSE;
} else {
return TRUE;
}
}
}
Nótese que la manera de cargar un modelo es poniendo las letras CI después de $this esto sucede porque vamos a cargar un modelo dentro de una librería, y previamente a esto ya debieron haber creado el modelo, para el ejemplo cree el modelo Usuarios_model
<?php
class Usuarios_model extends CI_Model {
public function __construct() {
parent::__construct();
}
function check_email($email) {
$this->db->select('email_usuario')
->where('email_usuario', $email);
$consulta = $this->db->get('usuarios');
if ($consulta->num_rows() > 0) {
return TRUE;
}
}
}
Luego de esto tienen que cambiar la manera de llamar a la función en el conjunto de reglas, se tiene que hacer sin anteponer la palabra callback_
array(
'field' => 'username',
'label' => 'Usuario',
'rules' => 'trim|required|username_check|valid_email'
),
Y de esta manera queda solucionado el tema en cuestión.
Este artículo nace por la necesidad de que he buscado en todos lados la solución a un tema que tenía con los callbacks de codeigniter, lo que me pasaba es que por mas que buscaba e intentaba una regla en especial no hacía el llamado a mi funcion con un callback así que busqué por todos los medios y lo solucioné de la siguiente manera:
Lo que pasa es que al hacer mi conjunto de reglas en el form_validation:
array(
'field' => 'username',
'label' => 'Usuario',
'rules' => 'trim|required|callback_username_check|valid_email'
),
Hacía lo que hacía no llamaba a la función "username_check", para esto se tiene que crear dentro de:
../xammp/htdocs/mi_proyecto/aplication/libraries/
<?php
class MY_Form_validation extends CI_Form_validation {
public function __construct($rules = array()) {
parent::__construct($rules);
$this->ci = & get_instance();
$this->ci->load->model('usuarios_model');
}
function username_check($str) {
if ($this->ci->usuarios_model->check_email($str)) {
$this->ci->form_validation->set_message('check_email', 'El correo ' . $str . 'ya se encuentra registrado');
return FALSE;
} else {
return TRUE;
}
}
}
Nótese que la manera de cargar un modelo es poniendo las letras CI después de $this esto sucede porque vamos a cargar un modelo dentro de una librería, y previamente a esto ya debieron haber creado el modelo, para el ejemplo cree el modelo Usuarios_model
<?php
class Usuarios_model extends CI_Model {
public function __construct() {
parent::__construct();
}
function check_email($email) {
$this->db->select('email_usuario')
->where('email_usuario', $email);
$consulta = $this->db->get('usuarios');
if ($consulta->num_rows() > 0) {
return TRUE;
}
}
}
Luego de esto tienen que cambiar la manera de llamar a la función en el conjunto de reglas, se tiene que hacer sin anteponer la palabra callback_
array(
'field' => 'username',
'label' => 'Usuario',
'rules' => 'trim|required|username_check|valid_email'
),
Y de esta manera queda solucionado el tema en cuestión.
Hacer callbacks a la Base de datos desde MY_Form_validation --Codeigniter--PHP--
Reviewed by Unknown
on
8:08:00
Rating:
No hay comentarios: