menu dynamique avec codeigniter

je construis le menu de navigation, il contient des catégories qui seront extraites d'une base de données, par exemple

Home      + Product   
          - Ham
          - Sausage
          - etc 
          - etc 


--------Database Schema------
+----+-------------------------+------+
| id | name                    | show |
+----+-------------------------+------+
|  1 | ham                     |    1 |
|  2 | sausages                |    1 |
+----+-------------------------+------+

c'est mon contrôleur de catégories

class Categories extends CI_Controller {

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

            $this->load->model('category');
        }

        public function index()
        {   
           //1. pulling data from db assigned to $data
            $data['categories'] = $this->category->get_categories();

           //2. passing $data to header view to build dynamic navigation menu
            $this->load->view('header',$data);

           //3. passing $data to the view category to render some other content
            $this->load->view('category',$data);

           //4. passing $data to footer view to build dynamic footer menu
            $this->load->view('footer',$data);
         }


         public function get($id)
         {
            $this->load->view('header');


     } 
}

------------ views/header.php page (code comme montré ci-dessous)


----------- Le problème est quand je choisis une catégorie dans le menu par exemple jambon je vois l'url est comme ça

127.0.0.1/cms/categories/get/1 sur la page des catégories

et quand je clique par exemple ham je serai transféré à cette URL

127.0.0.1/cms/categories/get/1

mais lorsque je survole le menu, je le vois

127.0.0.1/cms/categories/get/categories/get/1 here is the problem with the nav menu

vous voyez les gars, le contrôleur qui est {categories} ainsi que l'action qui est {get} chaque contrôleur et action sont répétés deux fois,

Mes questions 1- ce que je fais mal ici -

2- comment partager ce menu dynamique à travers l'ensemble de l'application correctement, où devrais-je mettre ce code. et gardez aussi à l'esprit que ce menu sera créé à partir d'une base de données

merci beaucoup à l'avance

0

2 Réponses

J'ai fait une petite bibliothèque pour ce menu dynamique. Si quelqu'un cherche encore cette réponse, espérons que cette aide pour eux.

Vous pouvez récupérer tout ce code depuis Github.

https://github.com/hassann201/Egenius_Dynamic_Menu 

Merci

0
ajouté

Vous avez juste besoin de fixer la vue


Pour le charger dans la vue correctement ... Je suggère, vous créez un modèle d'appel de dossier dans votre dossier d'affichage, appelons-le template.php

public function index()
    {   
       //1. pulling data from db assigned to $data
        $data['categories'] = $this->category->get_categories();

        $data['page_name'] = 'WHATEVER_PAGE_NAME_YOU_HAVE';

       //send it to the template instead....
        $this->load->view('template',$data);
     }

FICHIER DE MODÈLE

<html>
   <head></head>
   <body>
      $this->load->view('header');

      $this->load->view($data['page_name']);

      $this->load->view('footer');
   </body>
</html>

Le fichier HEADER.PHP sera comme ça ....

     <div>HEADER CONTENT </div>

Le fichier WHATEVER_PAGE_NAME_YOU_HAVE.PHP sera comme ceci ....

    

TESTING


FOOTER.PHP fichier sera comme ça ....

     <div>Footer CONTENT </div>

Pour le garder plus facile à gérer, créez une bibliothèque et appelez-le en costructor de chaque classe OU vous pouvez le charger automatiquement. Une fois son chargé, vous pouvez appeler la fonction et obtenir vos données .. laissez-moi savoir si vous avez besoin d'un exemple? ou vous pouvez lire http://ellislab.com/codeigniter%20/user -guide/general/creating_libraries.html J'ESPÈRE QUE CELA AIDE...

0
ajouté
Merci Sayed pour l'aide laissez-moi essayer cela .... J'espère que cela fonctionne ..
ajouté l'auteur Mohammed Allam, source
cela fonctionne parfaitement ....
ajouté l'auteur Mohammed Allam, source