Que está a la derecha? aviso en la segunda opción, estoy pasando los valores del formulario utilizando el $_POST variable. Mientras que la primera opción, que me llaman y asignar variables para cada campo de formulario.

He visto esto …

<validation code> ....

$todo = array(
      'name'=>$this->input->post('title'),
      'description'=>$this->input->post('description')
);

$this->Todo_model->add($todo); 

Pero también he visto la siguiente …

$records['email']    = "trim|required|min_length[4]|xss_clean";
...
...    

$this->validation->set_rules($records);

if ($this->validation->run())
{
   $this->account_model->saveAccountSettings("sam", $_POST);
   $this->session->set_flashdata('message', 'Done!');            

   redirect('account/settings');
} else {
...
} 
InformationsquelleAutor luckytaxi | 2010-01-07

3 Comentarios

  1. 3

    Que tienden a usar una mezcla de los dos ejemplos. Estoy bastante seguro de que las cosas como recortar no van a modificar el post real de los datos, por lo que sólo puede tomar ventaja de ello si usted va a través del marco de validación para obtener los datos. En realidad, nunca puesto de acceso directamente a más uso de CI.

    Además, yo estaría preocupado en el segundo ejemplo se trata sólo de empujones POST en mi modelo. ¿Qué pasa si alguien inteligente añade, «apellidos» a los post de los datos enviados y tu db columna es el nombre de la misma? Aunque no se esperaba que lidiar con que los datos que ahora tienes no validados los datos que vienen en. Es por eso que me emplear parte de su primer ejemplo y extraer manualmente los elementos que desea guardar en un array primera.

    Así que me gustaría recomendar un híbrido.

    Normalmente mi código se ve algo como esto:

    $fields['email']    = "trim|required|valid_email|min_length[4]|xss_clean";
    ...
    ...    
    
    $this->validation->set_rules($fields);
    
    if ($this->validation->run())
    {
       $account = new array();
       $account['id'] = $accountId; //wherever you get the Id from
       $account['email'] = $this->validation->email;
    
       $this->account_model->save($account);
       $this->session->set_flashdata('message', 'Done!');            
    
       redirect('account/settings');
    } else {
    ...
    } 
    • No comprender esta línea aquí. cuenta de $[‘email’] = $this->validación->correo electrónico; ¿Qué está haciendo? Me refiero a que veo es validar el campo, es que donde el primer campo entra en juego?
    • Usted puede usar $this->validación->algo como usarías $this->entrada->post(‘algo’). Que va a tener el valor de PUBLICAR después de que se ha ejecutado a través del marco de validación, teniendo en cuenta cosas como recortar y XSS.
    • ¿El «algo» tiene que ser definido en la primera línea? Ver donde dice $campos[‘email’] … como si yo sólo establecer «reglas de validación» para el correo electrónico, que puedo hacer $this->validación->id, sí?
    • Usted tendrá acceso a $this->validación->algo para cada regla define (en el ejemplo anterior $campos). $this->validación->id sólo iba a funcionar, en este ejemplo, si usted tenía una regla de validación para la IDENTIFICACIÓN de la ($campos[‘id’] = ‘recorte’; o somesuch) y el IDENTIFICADOR se pasa de nuevo a través de la forma. Básicamente, para cada campo del formulario tengo una regla y, a continuación, cada campo de formulario se puede acceder a través de este->validación->algo. Esto asegura que todo lo que recibo es validado y filtrada según sea necesario por las reglas.
    • impresionante! corro a través de tantos tutoriales y cada uno tiene algo diferente. me gusta tu explicación. muchas gracias!
  2. 0

    La primera opción es la mejor de fácil lectura o de seguimiento
    Pasar valores de variables post es la mejor opción

  3. 0

    Lo que el beneficio real para el uso de este

    $account['email'] = $this->validation->email;

    Lugar de

    $account['email'] = $this->input->post('email');
    • es sólo una buena práctica para tener el valor de uso de una sintaxis que implica que el valor ha sido validado

Dejar respuesta

Please enter your comment!
Please enter your name here