Question

En ce qui concerne les meilleures pratiques vont est-ce recommandé? J'ai un contrôleur de commentaires + modèle qui doit être appelé dans un contrôleur éléments et profils. Le contrôleur commentaires charge automatiquement le modèle de commentaires.

Est-il acceptable d'appeler le contrôleur de commentaires directement à partir du contrôleur articles et le profil, ou est la « meilleure pratique » façon d'appeler à la place du modèle de commentaires?

Je demande parce que dans kohana, la vue est pas une classe singleton si je devais appeler un contrôleur au sein d'un autre contrôleur je me retrouve avec deux points de vue. D'autre part, si je devais appeler simplement le modèle, il y aurait un code en double dans le contrôleur des éléments et des profils.

Tous les experts vous MVC aider! =)

Était-ce utile?

La solution

En général, je vais pour l'approche "Model Fat".

Je ne suis pas sûr de ce code que vous êtes vraiment inquiet pour la duplication.

Il y a deux manières que vous pourriez faire ceci:

Première façon: - Interrogez votre modèle Commentaires pour revenir quelques commentaires. - Faire passer les données de commentaire dans votre vue. - Rendre les commentaires dans la vue, en utilisant éventuellement une aide de vue

Deuxième voie: - Rendez-vous compte qu'il n'y a aucune raison pour votre point de vue ne peut pas parler directement à votre modèle. -. Écrivez une aide de vue qui saisit les données dont il a besoin directement à partir du modèle, et le rend

Je préfère la seconde façon. Certaines personnes ont un problème de laisser leur point de vue couche parler du modèle (en mode lecture seule!), Mais je ne suis pas l'un d'entre eux.

Autres conseils

Si vous utilisez Kohana 3, vous pouvez bénéficier de la fonction HMVC. Vous pouvez exécuter des contrôleurs dans les contrôleurs.

http://forum.kohanaphp.com/comments.php?DiscussionID=2768

Vérifiez le lien ci-dessus pour quelques exemples

Je dirais que cela dépend de ce que votre contrôleur retourne.

Si votre contrôleur peut revenir DTO / modèles, alors que, d'appeler un contrôleur est une bonne idée.

Votre contrôleur définit une entrée stricte, documentée, et nous espérons que la stabilité des points à votre fonctionnalité. Par conséquent, vous pouvez ignorer la mise en œuvre completly des commentaires, ou le modifier à volonté, tant que vous ne changer la signature de la méthode du contrôleur.

Cependant, si votre contrôleur ne peut pas renvoyer des données brutes, il est certainement prolematic, parce que vous obtenez html (ou un autre balisage) en retour. Cela signifie que vous devrez tuyau html directement dans la vue que vous voulez, ou extraire les données de celui-ci. Ces deux est une mauvaise idée.

Tuyauteries le HTML brut implique que si vous modifiez l'affichage des commentaires, l'affichage des commentaires sur le module de profil va inévitablement changer. cela pourrait être ce que vous voulez, mais je voudrais aller pour la flexibilité.

Maintenant, si vous vouliez données, vous devez extraire les données du balisage votre point de vue est revenu, ce qui est lourd et contre-productif.

Si vous essayez d'appeler une méthode statique, vous pouvez simplement appeler directement la fonction. Par exemple:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top