Bonsoir,

Alors je cherche à savoir comment afficher le résultat de tree d'une façon perso car j'aimerais mettre des H1 sur les catégories et les sous catégories dans des li.

Donc y a t-il un moyen???

Merci d'avance.

4 réponses


djtec
Auteur
Réponse acceptée

J'ai réussi sur mon forum en créant une fonction perso dans mon controller et en fesant plusieurs foreach dans ma vue donc je vous post ma solution si cela peut servir à quelqu'un un jour.

Voici mon controller:

function index() {
        $d'forum' ] = $this->getForumConvert($this->ForumsCategory->find('all', array('order' => array('ForumsCategory.lft ASC'))));

        $this->set($d);
    }

    function getForumConvert($data) {
        $d = array();

        foreach($data as $cat):
            if($cat"ForumsCategory"]"parent_id"] == 0):
                $d'categories']] = $cat"ForumsCategory"];
            else:
                $d'forums']]
                = $cat"ForumsCategory"];
            endif;
        endforeach;

        return $d;
    }

Et ma vue:

<?php
    $ci = 0;

    $categories = $forum'categories'];
    $forums = $forum'forums'];

    foreach($categories as $cat):
        if($ci != $cat"id"]):

            $ci = $cat"id"];
    ?>
            <table>
                <thead>
                    <tr>
                        <th><?php echo $cat"name"]; ?></th>
                        <th>Sujets</th>
                        <th>Messages</th>
                        <th>Dernier message</th>
                    </tr>
                </thead>

                <tbody>
    <?php
            foreach($forums as $f):

                if($cat"id"] == $f"parent_id"]):
                    //$timestamp = strtotime($f"Forums_post"]'created']);
    ?>
                    <tr>
                        <td><?php echo $f"name"]; ?><br /><?php echo $f"desc"]; ?></td>
                        <td>0</td>
                        <td>0</td>
                        <td></td>
                    </tr>
    <?php
                endif;
            endforeach;
    ?>
                </tbody>
            </table>
    <?php
        endif;

    endforeach;

    ?>

Mmh ya rien de préconçu pour faire ça. Tu va devoir te créer une fonction perso :)

djtec
Auteur

Donc il faut que je fasse une requête avec un find sur le champ lft puis que je le fasse dans un foreach.

Tu pense que ça le fera???

djtec
Auteur

Alors en fesant dans mon controller:

$d'categories'] = $this->RecettesCategory->find('all', array('order' => array('RecettesCategory.lft ASC')));

Puis ceci dans ma vue:

<table>
    <?php
    $ci = 0;

    foreach($categories as $cat):
        if($ci != $cat"RecettesCategory"]"id"]):
            if($cat"RecettesCategory"]"parent_id"] == 0):
                $ci = $cat"RecettesCategory"]"id"];
    ?>
                <tr>
                <th><?php echo $cat"RecettesCategory"]"name"]; ?></th>
                <th>Actions</th>
                </tr>
            <?php elseif($cat"RecettesCategory"]"parent_id"] == $ci): ?>
                            <tr>
                <td>-- <?php echo $html->link($cat"RecettesCategory"]"name"], array('action' => 'edit', $cat"RecettesCategory"]"id"])); ?></td>
                                <td>
                                    <?php echo $html->link('[x]', array('action' => 'delete', $cat"RecettesCategory"]"id"])); ?>
                                    <?php echo $html->link('[up]', array('action' => 'moveUp', $cat"RecettesCategory"]"id"])); ?>
                                    <?php echo $html->link('[down]', array('action' => 'moveDown', $cat"RecettesCategory"]"id"])); ?>
                                </td>
                </tr>
            <?php endif; ?>
    <?php
        endif;

    endforeach;

    ?>
</table>

Par contre je n'ai pas trouvé comment faire pour que à chaque nouvelle catégorie parente ça me recrée un nouveau tableau.

Voici le schéma de ce que j'ai actuellement:

DébutTableau
Catégorie parente>
Sous catégorie
Sous catégorie
Catégorie parente>
Sous catégorie
Sous catégorie
FinTableau

Et voilà ce que j'aimerais avoir:
DébutTableau
Catégorie parente>
Sous catégorie
Sous catégorie
FinTableau

DébutTableau
Catégorie parente>
Sous catégorie
Sous catégorie
FinTableau

Avez-vous une idée de comment faire car je ne trouve pas du tout...

Merci d'avance....