Bonsoir,
Actuellement, j'essaie de re-développer un site pour un projet que j'avais mis en suspend il y a 2 ans et voulant tout reprendre de zéro afin de coller plus facilement avec des outils récents…
Je retravaille donc la gestion de mon menu via le SQL ce qui me permet d'avoir "qu'un seul" menu mais plusieurs affichages différents (basé sur le système de forums visible ou non selon le groupe dans lequel on se trouve).
Sur l'ancienne version qui utilisais le moteur de template phpBB (que je trouves maintenant obsolète vu qu'il date de 2004) j'avais ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?php $request_menu = $sql->query("SELECT *, " . CATEGORY_TABLE . ".rank, " . MENU_ITEMS_TABLE . ".id AS items_id FROM " . CATEGORY_TABLE . " LEFT JOIN " . MENU_ITEMS_TABLE . " ON " . CATEGORY_TABLE . ".rank = " . MENU_ITEMS_TABLE . ".category_id WHERE " . MENU_ITEMS_TABLE . ".category_id = " . CATEGORY_TABLE . ".rank ORDER BY " . CATEGORY_TABLE . ".rank, " . MENU_ITEMS_TABLE . ".rank, " . MENU_ITEMS_TABLE . ".menu") or die ($sql->error()); $array_menu = array(); $array_perm = array(); $request_permissions = $sql->query("SELECT id_menu FROM " . PERMISSIONS_TABLE . " WHERE `id_group` = '" . $access . "' AND `auth` = '1'") or die ($sql->error()); while($data_permissions = $request_permissions->fetch_assoc()) { $array_perm[] = $data_permissions['id_menu']; } while($data_menu = $request_menu->fetch_assoc()) { if(in_array($data_menu['items_id'], $array_perm)) { if(!in_array($data_menu['rank'], $array_menu)) // Si la categorie n'a pas deja été affichée: { $template->assign_block_vars('category', array( 'ID' => $data_menu['rank'], 'CATEGORY_NAME' => stripslashes($data_menu['category']), )); $array_menu[] = $data_menu['rank']; } $template->assign_block_vars('category.item', array( 'ITEM_NAME' => stripslashes($data_menu['menu']), 'ITEM_URL' => $data_menu['url'], )); } } |
Ceci envoyait les données sur le fichier template HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <div id="content"> <div id="body_menu"> <!-- BEGIN category --> <div class="category_group"> <div class="category_title"> {category.CATEGORY_NAME} </div> <!-- BEGIN item --> <div class="menu"> λ <a href="{category.item.ITEM_URL}">{category.item.ITEM_NAME}</a> </div> <!-- END item --> </div> <!-- END category --> </div> <div id="body_page"> |
Le tout étant appelé dans monFichier.php via un pparse.
Maintenant, j'ai réécrit en partie de façon a me servir du moteur Twig (que je trouves vraiment bien pratique) mais, le soucis, c'est que je cherche a effectuer la même opération ou une similaire mais après deux jours de recherche à ce sujet, je sèche complétement.
Je fournis les fichiers ci-après.
Actuellement, le fichier index.php accueille quasiment tout en ce qui concerne les includes, ect… mais cela est de façon temporaire.
index.php :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php include "lib/Twig/Autoloader.php"; include "config/database/mysql.php"; include "config/sqlTable.php"; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem('view'); $twig = new Twig_Environment( $loader, array( 'cache' => FALSE, )); include "config/menu.php"; $query = $sql->query('SELECT * FROM portfolio_news'); echo $twig->render('index.html.twig', array( 'news' => $query, )); |
config/menu.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php # FOR TEST $userGroupID = 0; $request_menu = $sql->query("SELECT *, " . MENU_CATEGORY_TABLE . ".position AS category_position, " . MENU_ITEMS_TABLE . ".position AS items_position, " . MENU_ITEMS_TABLE . ".id AS item_id, " . MENU_CATEGORY_TABLE . ".name AS category_name FROM " . MENU_CATEGORY_TABLE . "," . MENU_ITEMS_TABLE . " WHERE " . MENU_ITEMS_TABLE . ".category = " . MENU_CATEGORY_TABLE . ".id ORDER BY " . MENU_CATEGORY_TABLE . ".position," . MENU_ITEMS_TABLE . ".position"); $array_menu = array(); $array_perm = array(); $request_perm = $sql->query("SELECT * FROM " . MENU_PERMISSIONS_TABLE . " WHERE `id_group` = '" . $userGroupID . "' AND `permission` = '1'"); while ($return_perm = $request_perm->fetch(PDO::FETCH_ASSOC)) { $array_perm[] = $return_perm['id_item']; } $request_perm->closeCursor(); while ($return_menu = $request_menu->fetch(PDO::FETCH_ASSOC)) { if (in_array($return_menu['item_id'], $array_perm)) { if (!in_array($return_menu['category_position'], $array_menu)) { $array_menu[] = $return_menu['category_position']; } } } |
view/layout/base.html.twig :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="./assets/css/global.css"> <link rel="stylesheet" href="./assets/css/bootstrap.min.css"> {% block css %}{% endblock %} </head> <body> <div class="container"> <br /> {% include 'layout/header.html.twig' %} <br /> {% include 'layout/nav.html.twig' %} {% block body %}{% endblock %} </div> </body> </html> |
view/layout/nav.html.twig :
1 2 3 4 | <div class="row"> <nav class="col-md-2"> </nav> </div> |
J'espère que ma demande est assez claire.
D'avance, merci pour vos réponses.