2010-08-09 4 views
3

J'ai toujours utilisé le modèle pour stocker ou exécuter des requêtes de base de données. J'ai entendu parler du gros modèle, du concept de contrôleur mince.Que devrait-on faire dans les modèles CodeIgniter?

La façon dont je configure mes modèles en ce moment provoque beaucoup de rebut dans les contrôleurs pour des choses comme la validation des formulaires, le formatage des données. La validation de formulaire, le téléchargement de fichier et le formatage de données appartiennent-ils au contrôleur ou au modèle?

Je réalise que cette question est subjective, ce qui devrait créer une bonne discussion plutôt qu'une réponse concrète.

Répondre

3

La validation du formulaire devrait certainement faire partie du modèle. Je représente généralement chaque forme comme un modèle et je lui transmets les paramètres post/get aseptisés. Le modèle peut alors prendre n'importe quelle action nécessaire en fonction de l'entrée et utiliser une propriété (éventuellement avec un getter) pour signaler le succès ou l'échec. Dans le code psuedo vous voulez regarder quelque chose comme:

class Controller 
{ 
    function action() 
    { 
     $input = new Input(); 
     $form = new FormModel($input); 
     if ($errors = $form->errors()) 
     { 
      //load the appropriate view for the errors 
     } 
     else 
     { 
      //load the appropriate view for success with an optional redirect 
     } 
} 
+1

Je pense que cette bibliothèque pourrait aider http://frankmichel.de/formgenlib/user_guide/introduction/getting_started.html – Keyo

+0

@keyo - c'est l'un de mes petits soucis avec CI. Il vous oblige à avoir toutes les informations sur le formulaire (champs, étiquettes, exigences de validation) dans le contrôleur. Ce n'est pas juste. Si vous ne voulez pas voir un bon framework PHP MVC, vérifiez Kohana. – aaronasterling

+0

J'aimerais pouvoir utiliser kohana ou quelque chose avec une bonne architecture, mais je suis coincé avec CI pour le travail. Je peux cependant le configurer avec certains moteurs ORM. – Keyo

0

Le modèle est ce qui interagit avec les données (le plus souvent une base de données). Les contrôleurs utilisent les modèles pour accéder aux données.

3

Vous avez deux routes principales à parcourir. Thin contrôleur/modèle de graisse ou contrôleur de graisse/modèle mince. Fondamentalement, est-ce que vous avez mis la plupart de l'interaction. Je préfère garder au modèle la majeure partie du code. De cette façon, le code est disponible dans pratiquement tous les contrôleurs et/ou bibliothèques. Si le code reste sur le contrôleur, il est difficile (mais pas impossible) de l'utiliser dans d'autres contrôleurs.

Les validations de lije et d'autres tâches courantes devraient être dans une lib ou une aide. Vous pouvez produire un ensemble de «travailleurs» (c'est le nom que je leur donne) pour faire le gros du travail. De plus, CI a BEAUCOUP de libs et de helpers prêts à la fois de l'équipe de CI et de la communauté. Mess autour du wiki pour trouver la richesse des informations disponibles.

Hope this helps Vx

Questions connexes