2010-12-05 33 views
2

En CodeIgniter, j'ai tel modèle et contrôleur pour poster un commentaire avec le modèle AJAXVérifier les données de formulaire - dans le modèle ou dans le contrôleur?

:

class Items_model extends Model { 
function add_comment($item_id, $user_id, $text, $type) 
    { 
     $data = array(
      'item_id' => $item_id, 
      'user_id' => $user_id, 
      'text' => $text, 
      'type' => $type, 
      'created_at' => mktime() 
     ); 
     $this->db->insert('comments', $data); 
     return $this->db->insert_id(); 
    } 
contrôleur

:

class Items extends Controller { 
function add_comment() 
    { 
     $this->load->helper('date'); 

     $item_id = $this->input->post('item_id', TRUE); 
     $text = $this->input->post('comment_text', TRUE); 
     $type = $this->input->post('type', TRUE); 

     $user_id = $this->session->userdata('user_id'); // user id, must be logged in 

     $this->Items_model->add_comment($item_id, $user_id, $text, $type); 
     $response = array(
      'message' => 'Thank you!' 
     ); 
     echo json_encode($response); 
    } 

Dans le contrôleur ou dans le modèle que je devrais contrôle que les données de forme: $ item_id et $ text ne sont pas nulles, $ user_id est défini et l'utilisateur s'est connecté ? Et comment?

Meilleur, Kirill.

+0

Dupliquer: http://stackoverflow.com/questions/3902168/where-does-input-validation-happen-in-mvc –

Répondre

2

Je voudrais valider au niveau du contrôleur, puis définir les valeurs par défaut dans le niveau du modèle si vous travaillez par vous-même. Idéalement, vous devriez avoir une validation et une gestion des erreurs à chaque niveau, et même faire une validation du côté client. Sur les grands projets, il se peut qu'un développeur construise le modèle et qu'un autre soit en train de construire le contrôleur. Si chacun valide à son propre niveau, non seulement il rendra l'application plus sécurisée, mais il permettra à chacun de savoir qu'il accède correctement aux fonctions, etc.

+0

Comment faire une gestion idéale des erreurs dans CodeIngiter, le savez-vous? – Kir

+1

avez-vous vu la bibliothèque form_validation? http://codeigniter.com/user_guide/libraries/form_validation.html – Ross

+0

Oui, mais comment vérifier l'indicateur $ this-> session-> userdate ('logged_id') avec Form_validator? – Kir

1

This person (sur le forum CodeIgniter) est en désaccord, en disant vous devez brosser les données où il obtient traitées, pas où il obtient passé. Cela a du sens pour moi, car cela ne devrait se produire que dans un seul endroit et non dans tous les contrôleurs qui pourraient utiliser le modèle.