src/Controller/BreadcrumbController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. class BreadcrumbController extends AbstractController
  6. {
  7.     /**
  8.      * This function will take $_SERVER['REQUEST_URI'] and build a breadcrumb based on the user's current path
  9.      * 
  10.      * @param str $separator Breadcumb separator
  11.      * @param str $home Home text
  12.      * 
  13.      * @return string Breadcumb HTML
  14.      */
  15.     public function Breadcrumbs(): Response
  16.     {
  17.         $url = $_SERVER["REQUEST_URI"];
  18.         
  19.         $env = '/dev';
  20.         preg_match('/^\/dev|^\/prod/', $url, $matches);
  21.         if(isset($matches[0]))
  22.             $env = $matches[0];        
  23.         if(strpos($url, '#') > 0)
  24.             $url = substr($url, 0, strpos($url, '#'));
  25.         if(strpos($url, '?') > 0)
  26.             $url = substr($url, 0, strpos($url, '?'));
  27.         $scheme = $_SERVER['REQUEST_SCHEME'];
  28.         // $crumbs = explode("/",$_SERVER["REQUEST_URI"]);
  29.         $crumbs = explode("/", $url);
  30.         // $address = 'https://'.$_SERVER['HTTP_HOST'];
  31.         $address = $scheme . '://' . $_SERVER['HTTP_HOST'];
  32.         $color = (strtolower($env) == '/dev') ? 'text-yellow-600' : 'text-gray-100';
  33.         
  34.         // $breadcrumbs = ["<a href=".$address."/dev/public/home>"."<span class='text-gray-600'>Accueil</span></a>"];
  35.         $breadcrumbs = ["<a href=".$address."$env/public/home>"."<span class='$color'>Accueil</span></a>"];
  36.         
  37.         $build = '';
  38.         foreach($crumbs as $crumb){
  39.             if(in_array($crumb, [$_SERVER['HTTP_HOST'], ''])) {
  40.                 continue;
  41.             }
  42.             $build .= '/'.$crumb;
  43.             $crumb = ucfirst(str_replace(array(".php","_"),array(""," "),$crumb) . ' ');
  44.             $crumb = str_replace('-', '&nbsp;', $crumb);
  45.             $breadcrumbs[$crumb] = " &nbsp;&nbsp;/&nbsp; <a href=".$address.$build.">"."<span class='$color'>".$crumb."</span></a>";
  46.         }
  47.         $removes = ["Public ", "Home ", "Portail ", "Dev ", "Prod "];
  48.         
  49.         foreach($removes as $remove) {
  50.             unset($breadcrumbs[$remove]);
  51.         }
  52.         return $this->render('_partials/breadcrumb.html.twig',[
  53.             'env' => $env,
  54.             'breadcrumbs' => $breadcrumbs,
  55.         ]);
  56.     }
  57.       
  58. }