Bonjour à tous !

Suite au tutoriel (très bon) de Grafikart au sujet du Tree Behaviour, j'ai décidé pour mon projet tutoré de réaliser le projet via le framework cakePHP.

Alors en fait mon problème se situe au niveau du menu. En effet, ayant suivi le tuto comme dit précédemment, j'ai donc une table "Categories" contenant "id, name, lft, rght, parent_id".
Jusque là pas de soucis, cependant, j'aimerai afficher un menu de ce type :

<ul>
    <li><a href="#">Catégorie 1</a>
        <ul>
            <li><a href="#">Sous-Catégorie 1.1</a></li>
            <li><a href="#">Sous-Catégorie 1.2</a></li>
        </ul>
    </li>
    <li><a href="#">Catégorie 2</a>
        <ul>
            <li><a href="#">Sous-Catégorie 2.1</a></li>
            <li><a href="#">Sous-Catégorie 2.2</a></li>
        </ul>
    </li>
</ul>

Je n'ai pas trouvé d'exemple concret pour la réalisation de ce type de menu. Si vous pouviez m'aider, ça me donnerai un vrai coup de pouce pour l'avancement de mon projet.

PS: J'ai bien vu sur le forum le sujet posté par Djtec qui se rapproche du mien, cependant même en essayant d'adapter son code, je n'y arrive pas.

Merci encore à ceux qui me répondront !

1 réponse


Sebounet
Auteur
Réponse acceptée

Bon après une période de reflexion, j'ai enfin trouver une solution à mon problème.
Je remercie Djtec qui m'a permis de résoudre ce problème avec son code. Je l'ai bien sur adapté à ma situation.

Voici le code:

//controllers/categories_controller.php
function index(){
    $d = array();
    $d'menu'] = $this->getMenu(
    $this->Category->find('all', array('order' => array('Category.lft ASC'))));  
    $this->set('menu', $d'menu']);
    $this->render('index'); 
}
function getMenu($data){
    $d = array();  
    foreach($data as $cat){  
        if($cat"Category"]"parent_id"] == 0){ 
            $d'categories']] = $cat"Category"];  
        }else{  
            $d'ss-categories']] = $cat"Category"];  
        }  
    } 
return $d;      
}

//views/categories/index.ctp
    $ci = 0;  
    $categories = $menu'categories'];  
    $ss_categories = $menu'ss-categories']; 
    foreach($categories as $cat):  
        if($ci != $cat"id"]):
            $ci = $cat"id"];
            echo "<li><a href=\"\">";  
            echo $cat'name']."</a>";
            echo "<ul>"; 
            foreach($ss_categories as $ssC):
                if($cat"id"] == $ssC"parent_id"]):
                echo "<li><a href=\"#\">".$ssC'name']."</a>";
                endif;
            endforeach;
            echo "</ul>";
            echo "</li>";                       
        endif;
    endforeach;

//views/layout/default.ctp
<ul id="menu">
    <?php
    echo $this->requestAction(array('controller' => 'categories', 'action' => 'index'));                
    ?>
</ul><!-- Fin Menu -->

Voilà j'espère que ce code vous aidera, comme j'ai été aidé.

A+