menu = $menu; } public function generate() { $items = json_decode($this->menu->items, true); if (!empty($items)) { // echo '
'; } } public function generateTree($items = [], $depth = 0, $parentKey = '') { // Duyệt qua từng mục trong danh sách foreach ($items as $k => $item) { // Lấy class của mục, nếu không có thì trả về chuỗi rỗng $class = e($item['class'] ?? ''); // Lấy url của mục, nếu không có thì trả về chuỗi rỗng $url = $item['url'] ?? ''; // Lấy target của mục, nếu không có thì trả về chuỗi rỗng $item['target'] = $item['target'] ?? ''; // Nếu không có model cho mục, bỏ qua mục này if (!isset($item['item_model'])) continue; // Nếu model cho mục tồn tại if (class_exists($item['item_model'])) { // Lấy class của model $itemClass = $item['item_model']; // Tìm mục trong database theo id $itemObj = $itemClass::find($item['id']); // Nếu không tìm thấy mục, bỏ qua mục này if (empty($itemObj)) { continue; } // Lấy url chi tiết của mục $url = $itemObj->getDetailUrl(); } // Kiểm tra xem mục hiện tại có phải là mục đang được chọn không if ($this->checkCurrentMenu($item, $url)) { // Nếu đúng, thêm class 'active' vào class của mục $class .= ' active'; // Thêm key của mục vào danh sách các mục đang được chọn $this->activeItems[] = $parentKey; } // Nếu mục có danh sách con if (!empty($item['children'])) { // Bắt đầu buffering output ob_start(); // Tạo cây menu cho danh sách con $this->generateTree($item['children'], $depth + 1, $parentKey . '_' . $k); // Lấy output từ buffer và xóa buffer $html = ob_get_clean(); // Nếu key của mục nằm trong danh sách các mục đang được chọn, thêm class 'active' vào class của mục if (in_array($parentKey . '_' . $k, $this->activeItems)) { $class .= ' active '; } } // Thêm depth vào class của mục $class .= ' depth-' . ($depth); // In ra thẻ li với class tương ứng printf('', $class); // Nếu mục có danh sách con, thêm icon caret vào tên mục if (!empty($item['children'])) { printf(' ', $class); $item['name'] .= ' '; } if (Str::lower(trim(strip_tags($item['name']))) === 'lịch học') { $url = '/school/schedule'; } // In ra thẻ a với target, url và tên mục tương ứng printf('%s ', e($item['target']), e($url), clean($item['name'])); // ✅ Nếu tên là "Lịch Học", đổi URL thành /abc // Nếu mục có danh sách con, in ra thẻ ul cho danh sách con if (!empty($item['children'])) { echo '"; } // Kết thúc thẻ li echo ' '; } } protected function checkCurrentMenu($item, $url = '') { if (trim($url, '/') == request()->path()) { return true; } if (!static::$currentMenuItem) return false; if (empty($item['item_model'])) return false; if (is_string(static::$currentMenuItem) and ($url == static::$currentMenuItem or $url == url(static::$currentMenuItem))) { return true; } if (is_object(static::$currentMenuItem) and get_class(static::$currentMenuItem) == $item['item_model'] && static::$currentMenuItem->id == $item['id']) { return true; } return false; } public static function setCurrentMenuItem($item) { static::$currentMenuItem = $item; } public static function getActiveMenu() { return static::$currentMenuItem; }}
Class "Modules\Core\Walkers\MenuWalker" not found
Error: Class "Modules\Core\Walkers\MenuWalker" not found in file /home/eduoka.com/public_html/app/Helpers/AppHelper.php on line 125
#0 /home/eduoka.com/public_html/app/Http/Controllers/Controller.php(46): set_active_menu()
#1 /home/eduoka.com/public_html/modules/Location/Controllers/LocationController.php(61): App\Http\Controllers\Controller->setActiveMenu()
#2 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Modules\Location\Controllers\LocationController->detail()
#3 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction()
#4 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\Routing\ControllerDispatcher->dispatch()
#5 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route->runController()
#6 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(798): Illuminate\Routing\Route->run()
#7 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#8 /home/eduoka.com/public_html/app/Http/Middleware/RequireChangePassword.php(41): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#9 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\Http\Middleware\RequireChangePassword->handle()
#10 /home/eduoka.com/public_html/app/Http/Middleware/SetLanguageForAdmin.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#11 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\Http\Middleware\SetLanguageForAdmin->handle()
#12 /home/eduoka.com/public_html/app/Http/Middleware/SetCurrentCurrency.php(48): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#13 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\Http\Middleware\SetCurrentCurrency->handle()
#14 /home/eduoka.com/public_html/app/Http/Middleware/HideDebugbar.php(32): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#15 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\Http\Middleware\HideDebugbar->handle()
#16 /home/eduoka.com/public_html/app/Http/Middleware/RedirectForMultiLanguage.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#17 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\Http\Middleware\RedirectForMultiLanguage->handle()
#18 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#19 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle()
#20 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#21 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
#22 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#23 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#24 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#25 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#26 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle()
#27 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#28 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#29 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#30 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#31 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#32 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(799): Illuminate\Pipeline\Pipeline->then()
#33 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(776): Illuminate\Routing\Router->runRouteWithinStack()
#34 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(740): Illuminate\Routing\Router->runRoute()
#35 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(729): Illuminate\Routing\Router->dispatchToRoute()
#36 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Illuminate\Routing\Router->dispatch()
#37 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#38 /home/eduoka.com/public_html/themes/Base/Core/Middleware/RunUpdater.php(76): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#39 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Themes\Base\Core\Middleware\RunUpdater->handle()
#40 /home/eduoka.com/public_html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(66): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#41 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Barryvdh\Debugbar\Middleware\InjectDebugbar->handle()
#42 /home/eduoka.com/public_html/vendor/sirodiaz/laravel-redirection/src/RedirectRequests.php(38): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#43 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): SiroDiaz\Redirection\RedirectRequests->handle()
#44 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#45 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#46 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle()
#47 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#48 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#49 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
#50 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#51 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle()
#52 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#53 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#54 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#55 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Http\Middleware\HandleCors->handle()
#56 /home/eduoka.com/public_html/app/Http/Middleware/RedirectToInstaller.php(40): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#57 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\Http\Middleware\RedirectToInstaller->handle()
#58 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#59 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Http\Middleware\TrustProxies->handle()
#60 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#61 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\Pipeline\Pipeline->then()
#62 /home/eduoka.com/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#63 /home/eduoka.com/public_html/public/index.php(76): Illuminate\Foundation\Http\Kernel->handle()
#64 {main}