1
0

BackendPresenter.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Presenters;
  3. use Route;
  4. class BackendPresenter
  5. {
  6. private $route;
  7. public function menu()
  8. {
  9. $this->route = Route::currentRouteName();
  10. $menu = config('blog.menu');
  11. $menuString = '';
  12. foreach ($menu as $mList) {
  13. $count = count($mList);
  14. if ($count > 1) {
  15. $menuString .= $this->childrenShow($mList);
  16. } else {
  17. $menuString .= $this->parentShow($mList);
  18. }
  19. }
  20. return $menuString;
  21. }
  22. /**
  23. * @param $menu
  24. * @return string
  25. */
  26. private function childrenShow($menu)
  27. {
  28. $string = '<li class="treeview %s" style="line-height:30px;">';
  29. $string .= ' <a href="#">
  30. <i class="'.$menu['tree_title']['icon'].'"></i>
  31. <span>'.$menu['tree_title']['name'].'</span>
  32. <i class="fa fa-angle-left pull-right"></i>
  33. </a>';
  34. unset($menu['tree_title']);
  35. $string .='<ul class="treeview-menu"> %s </ul>';
  36. $liString = '';
  37. $active = '';
  38. foreach ($menu as $route => $m) {
  39. $activeString = $this->active($route);
  40. if ($activeString != "") {
  41. $active = $activeString;
  42. }
  43. $liString .= "<li class='".$activeString."'><a href='".route($route)."'>".$m['name']."</a></li>";
  44. }
  45. $string .= '</li>';
  46. $string = sprintf($string, $active, $liString);
  47. return $string;
  48. }
  49. /**
  50. * @param $menu
  51. * @return string
  52. */
  53. private function parentShow($menu)
  54. {
  55. $string = '';
  56. foreach ($menu as $route => $m) {
  57. $string.= "<li class='".$this->active($route)."'>
  58. <a href='".route($route)."'>
  59. <i class='".$m['icon']."'></i>
  60. <span>".$m['name']."</span>
  61. </a>
  62. </li>";
  63. }
  64. return $string;
  65. }
  66. /**
  67. * @param $route
  68. * @return string
  69. */
  70. private function active($route)
  71. {
  72. return $this->route == $route ? ' active' : '';
  73. }
  74. }