2011-05-06 3 views
0

Jusqu'à présent, je crée un contrôleur pour une section de site avec une méthode pour chaque page - la plupart sont des pages statiques, ne nécessitant pas beaucoup de logique ou un modèle.Code Ignitor: Mettre dans des contrôleurs séparés ou un?

Mais lorsque certaines de ces pages ont des fonctionnalités complexes et ont besoin de leur propre modèle, dois-je les séparer dans leurs propres contrôleurs? ou existe-t-il un moyen de les conserver dans le contrôleur et de charger le modèle par méthode ... probablement la mauvaise chose à faire

Répondre

3

Totalement d'accord avec jondavidjohn's answer. Je suggère juste de faire ce qui fonctionne pour vous pour l'instant, et ne vous inquiétez pas trop de frais généraux ou de faire la chose «correcte». Vous allez bientôt réaliser ce que vous devez faire et comment être organisé, et aussi loin que les frais généraux - Codeigniter est assez léger, ne vous inquiétez pas de l'optimisation à ce stade - il suffit de tout faire fonctionner comme vous le souhaitez.

Prenez votre premier projet Codeigniter et faites de votre mieux, mais considérez-le comme une application jetable. Chaque fois que vous travaillez avec, vous en apprendrez plus sur la façon de l'utiliser, et surtout si vous continuez à lire et à poser des questions.

Pour répondre à votre question littérale: Non, il n'y a rien de mal à charger le modèle par méthode. En fait, cela peut être «mieux» que de charger dans le __construct de votre contrôleur, car cela vous assure de charger uniquement ce dont vous avez besoin. Alors ne t'en fais pas pour ça.

Jusqu'à présent, je crée un contrôleur pour une section de site avec une méthode pour chaque page - la plupart sont des pages statiques

Il n'y a rien de mal à cela, mais pour faciliter les choses, vous pouvez utiliser la même méthode pour chacune de vos pages statiques, et gardez vos URL pareil. Quelque chose comme ceci:

class Pages extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    function index($page) 
    { 
     $this->load->view("pages/$page"); 
    } 

} 

// config/routes.php 
$route['page/(:any)'] = 'pages/index/$1'; 

Ceci faire correspondre l'url /page/my_first_page au contrôleur Page et appelez index() avec l'argument my_first_page. Vous pouvez ensuite l'utiliser pour toutes vos pages statiques sans données dynamiques. Vous pouvez aller plus loin, mais c'est un exemple d'une option que vous pouvez choisir pour éviter d'écrire une nouvelle méthode pour chaque page statique.

0

Vous pouvez charger le modèle par méthode. Ce n'est pas une mauvaise pratique de le faire.

$this->load->model('your_model'); 

Les modèles ne sont généralement pas trop intensifs à charger. Vous ne devriez pas trop vous inquiéter de charger des modèles, sauf si vous essayez de sauvegarder une seule bouchée.

3

Parce que Codeigniter est tellement sans convention, cela conduit à des questions d'opinion comme celle-ci.

En général si je conseille toujours que plus de modularité est mieux que moins modularité et vous pouvez jamais trop organiser.

Tout simplement parce que quelque chose n'est pas « mal » doe font mieux.

Seulement vous pouvez décider à la fin, parce que vous serez le seul à l'entretenir.

+0

"vous ne pouvez jamais trop organiser" Vous devez vous en souvenir! –

0

il est bon d'utiliser un contrôleur spécifique pour chaque page, de sorte que l'application devient légère, et doit également créer son sur le modèle. Ainsi, l'application étend ses fonctionnalités, il devient facile à développer:

 class Location extends CI_Controller { 
public function __construct() 
{ 
parent::__construct(); 
$this->load->library('session'); 
    } 
public function index() 
{ 
$data['title'] = "Hello world"; 
$this->load->view('locale_view', $data);   
} 
    } 
Questions connexes