Je suis nouveau sur CodeIgniter, MVC et OOP. J'essaie de créer deux galeries d'images qui reposent sur un contenu différent, mais avec la même configuration et les mêmes fonctionnalités. Quelle est la meilleure façon de configurer cela? Dois-je créer une bibliothèque contenant toutes les fonctionnalités et l'appeler dans mes contrôleurs?Comment créer plusieurs galeries d'images CodeIgniter qui ont la même configuration et un contenu différent?
Répondre
Dans MVC, vous voulez vous assurer que la collecte de données (modèle), la logique (contrôleur) et l'affichage (affichage) sont séparés de manière logique. Pour ce faire, vous devez disposer d'une méthode commune pour assembler les données de votre galerie d'images que vous créez dans votre modèle et passer à votre vue via votre contrôleur. Donc, nous allons examiner une fonction de modèle hyper-simpliste comme ceci:
function getImages($param)
{
if ($param)
{
return array(
array('id'=>1, 'caption'=>'Image 1', 'url'=>'/images/image1.jpg'),
array('id'=>2, 'caption'=>'Image 2', 'url'=>'/images/image2.jpg')
)
}
else
{
return array(
array('id'=>3, 'caption'=>'Image 3', 'url'=>'/images/image3.jpg'),
array('id'=>4, 'caption'=>'Image 4', 'url'=>'/images/image4.jpg')
)
}
}
Je suis juste en utilisant $param
ici pour être vrai ou faux pour répondre à votre exigence de mise en forme de la même manière « contenu différent ». Alors, maintenant que vous avez cette fonction dans vos images modèle, vous pouvez l'appeler depuis votre contrôleur comme ceci:
$images = $this->Images->getImages($param);
Maintenant que vous avez les données dans un format cohérent, vous savez que vous pouvez toujours passer cette tableau d'images à une vue d'images qui attend toujours un certain format (dans ce cas, un tableau ou des tableaux qui contiennent des données d'image de base).
Maintenant, vous voulez créer une vue image_gallery qui ressemble fondamentalement ceci:
<div id="image_gallery">
<?php foreach($images as $image) { ?>
<img src="<?php echo $image['url'] ?>" />
<div class="image_caption"><?php echo $image['caption'] ?></div>
<?php } ?>
</div>
Bien sûr, votre galerie réelle va probablement regarder bien différent, mais l'idée est que, si votre image l'information est cohérente, vous ne devriez pas avoir de problèmes à créer votre galerie d'images. Le dernier morceau du casse-tête envoie les données images dans la vue, et qui se fait comme celui-ci de votre contrôleur:
$data = array();
$data['images'] = $images; //this is the var from above when we called $this->Images->getImages($param)
$this->load->view('image_gallery', $data);
Maintenant que nous avons cette fente dans le tableau $data
appelé « images », nous serons capable d'accéder à $images
dans notre vue image_gallery.
Bien sûr, vous n'avez pas toujours besoin d'appeler les vues de vos contrôleurs. En effet, il est souvent judicieux d'appeler des vues depuis l'intérieur, mais cela dépend entièrement de vos besoins. Parfois, il est même judicieux d'appeler des vues et de les renvoyer comme des chaînes d'une bibliothèque, mais juste un avertissement juste: cela peut vous éloigner facilement de la simplicité de l'approche MVC.
Oui, créer une bibliothèque et accepter les paramètres d'initialisation (principalement le nom de la galerie actuelle à afficher ou à modifier) est ce que vous voulez faire.
- 1. Javascript: Ajouter plusieurs galeries Lighthbox sur la même page
- 2. Comment libérer plusieurs classes qui ont le même délégué?
- 3. Smarty - même modèle contenu différent
- 4. Comment comparer le contenu de deux fichiers texte et retourner "Même contenu" ou "contenu différent"?
- 5. Créer une info-bulle sur Silverlight DataGridTextColumn qui est différent du contenu de la cellule liée
- 6. Plusieurs testng.xml dans la même configuration d'exécution IntelliJ?
- 7. codeigniter plusieurs conditions de jointure sur la même table
- 8. Problème de configuration et de débogage Codeigniter
- 9. Configuration de Codeigniter
- 10. Comment puis-je synchroniser deux tables MySQL qui ont les mêmes structures et serveur différent
- 11. Comment déterminer l'ordre des contrôles qui ont le même DockStyle?
- 12. Gestion des fichiers attachmnet avec le même nom et un contenu différent
- 13. Concevoir des vues dans IB et les utiliser plusieurs fois avec un contenu différent?
- 14. plusieurs applications avec codeigniter du même répertoire de framework?
- 15. plusieurs boutons qui redirigent vers un emplacement différent
- 16. Problème lors de la publication des artefacts (Ivy publie plusieurs bocaux avec un nom différent mais avec le même contenu)
- 17. Configuration d'un fichier de configuration pour CodeIgniter
- 18. servant un contenu différent basé sur le domaine dans le codeigniter
- 19. Google Maps API v3 - infoWindows ont tous le même contenu
- 20. Plusieurs contrôles avec le même ID 'xxx' ont été trouvés
- 21. voir si deux fichiers ont le même contenu en python
- 22. Pylons config a un contenu différent dans websetup.py
- 23. Jquery Cacher plusieurs lignes ont le même id
- 24. Comment prendre en charge plusieurs formulaires qui ciblent le même Créer une action sur la même page?
- 25. Comment créer un projet avec un encodage de caractères différent?
- 26. Faire JQuery LightBox Plugin de travail avec plusieurs galeries
- 27. Différentes icônes pour les fichiers avec la même extension mais un contenu différent?
- 28. Django: Comment auto-incrémenter un champ qui peut avoir plusieurs de la même valeur
- 29. Comment développer des méthodes qui ont la même fonctionnalité pour certaines entités?
- 30. Créer des onglets en utilisant HTML et en chargeant un contenu différent, pour un clic sur chaque onglet
Donc, si je cherchais à faire plusieurs galeries alors je voudrais juste avoir des méthodes séparées dans mon contrôleur qui appellent mon modèle puis envoyer cette information à mon avis? –
@evilrobotz Je ne sais pas exactement quelle est votre configuration, mais imaginez que vous ayez une page contenant 2 galeries d'images, chacune avec un contenu différent. Vous pouvez obtenir les données comme ceci: '$ data ['images'] = $ this-> Images-> getImages (true); $ gallery1 = $ this-> load-> view ('image_gallery', $ data, TRUE); $ data ['images'] = $ this-> Images-> getImages (false); $ gallery2 = $ this-> load-> view ('image_gallery', $ data, TRUE); Le troisième paramètre dans le chargeur de vue renvoie la vue en tant que chaîne. Vous pouvez ensuite insérer ces chaînes dans n'importe quelle vue que vous aimez ou vous pouvez faire ces appels directement à partir d'une de vos vues. – treeface
désolé, j'aurais dû être plus clair avec ma question. J'ai réussi à comprendre peu de temps après que j'ai demandé. Merci pour vos réponses détaillées. –