parameter name loadmodel igniter example creating code codeigniter parameters callback

name - load model codeigniter parameter



Codeigniter pasando 2 argumentos a la devoluciĆ³n de llamada (6)

Es mejor utilizar la biblioteca de Validación de Formulario para obtener los datos que se validan.

No siempre sus datos estarán en $ _GET o $ _POST (consulte https://www.codeigniter.com/userguide3/libraries/form_validation.html#validating-an-array-other-than-post ).

La mejor manera de acceder a sus datos dentro de una devolución de llamada de validación es esta:

$this->form_validation->validation_data

"validation_data" es una propiedad pública en la clase CI_Form_validation.

Después de publicar un formulario con dos campos llamados ''id'' y ''url'', tengo el siguiente código:

$this->load->library(''form_validation''); $this->form_validation->set_rules(''id'', ''id'', ''trim|xss_clean''); $this->form_validation->set_rules(''url'', ''url|id'', ''trim|xss_clean|callback_url_check'');

Una consulta db necesita ambos campos.

Se llama a la función url_check ($ str, $ id) pero en este caso ''id'' siempre tiene el valor 0.

Si acabo de hacer:

$this->form_validation->set_rules(''url'', ''url'', ''trim|xss_clean|callback_url_check'');

Y llame a url_check($str) todo está funcionando como se supone que debe hacer.

La pregunta es ¿cómo paso dos valores a url_check($str, $id) ?


Esto parece funcionar también.

$id = 1; $this->form_validation->set_rules(''username'', ''Human Username'', ''callback_username_check[''.$id.'']''); function username_check($str, $id) { echo $id; if ($str == ''test'') { $this->form_validation->set_message(''username_check'', ''The %s field can not be the word "test"''); return FALSE; } else { return TRUE; } }


Puede usar $ this-> input-> post directamente:

function check_url() { $url = $this->input->post(''url''); $id = $this->input->post(''id''); // do some database things you need to do e.g. if ($url_check = $this->user_model->check_url($url, $id) { return TRUE; } $this->form_validation->set_message(''Url check is invalid''); return FALSE; }



Simplemente hágalo de la manera correcta (al menos para CI 2.1+) como se describe en los documentos :

$this->form_validation->set_rules(''uri'', ''URI'', ''callback_check_uri[''.$this->input->post(''id'').'']''); // Later: function check_uri($field, $id){ // your callback code here }


Solo una nota sobre el uso de los parámetros de devolución de llamada como se sugiere en las otras respuestas. Si está utilizando app/config/form_validation.php para crear sus reglas de validación, la sintaxis $this->input->post(''parameter'') no funcionará dado que ese objeto no está disponible en el cargador de CI en el punto del ejecución donde lee el contenido de ese archivo. Tendría que hacer la llamada en su rutina de devolución de llamada, por ejemplo:

public function _validate_user_signup($username, $password) { $var = $this->input->post(''password'');

En este caso, el segundo parámetro pasado al método no contendría la contraseña, pero $ var lo haría después de la llamada.

Espero que eso esté claro. Mate