rahpt/ci4-module-nav
Composer 安装命令:
composer require rahpt/ci4-module-nav
包简介
Navigation and breadcrumb management system for CodeIgniter 4 modules
README 文档
README
Sistema de navegação e breadcrumbs para módulos CodeIgniter 4. Consolida menus de todos os módulos ativos e gerencia breadcrumbs automaticamente.
📋 Características
- ✅ Menu Consolidado - Agrega menus de todos os módulos ativos
- ✅ Breadcrumbs Automáticos - Sistema de breadcrumbs com helper functions
- ✅ Caching - Cache de menus para melhor performance (1 hora)
- ✅ Auto-Discovery - Descobre menus automaticamente de módulos
- ✅ Flexível - Suporta menus hierárquicos e customizados
🚀 Instalação
composer require rahpt/ci4-module-nav
📖 Uso Básico
Definir Menu no Módulo
// app/Modules/Dashboard/Config/Module.php class Module extends BaseModule { public function menu(): array { return [ [ 'label' => 'Dashboard', 'url' => 'dashboard', 'icon' => 'fas fa-tachometer-alt', 'order' => 1 ], [ 'label' => 'Relatórios', 'url' => 'dashboard/reports', 'icon' => 'fas fa-chart-bar', 'order' => 2, 'children' => [ [ 'label' => 'Vendas', 'url' => 'dashboard/reports/sales' ], [ 'label' => 'Financeiro', 'url' => 'dashboard/reports/financial' ] ] ] ]; } }
Exibir Menu na View
<?php use Rahpt\Ci4ModuleNav\MenuRegistry; $menus = MenuRegistry::all(); ?> <nav> <ul> <?php foreach ($menus as $item): ?> <li> <a href="<?= base_url($item['url']) ?>"> <?php if(isset($item['icon'])): ?> <i class="<?= $item['icon'] ?>"></i> <?php endif; ?> <?= $item['label'] ?> </a> <?php if(isset($item['children'])): ?> <ul> <?php foreach ($item['children'] as $child): ?> <li> <a href="<?= base_url($child['url']) ?>"> <?= $child['label'] ?> </a> </li> <?php endforeach; ?> </ul> <?php endif; ?> </li> <?php endforeach; ?> </ul> </nav>
Breadcrumbs
// No Controller set_breadcrumb('Home', '/'); set_breadcrumb('Dashboard', 'dashboard'); set_breadcrumb('Relatórios'); // Sem URL = item atual // Na View <?= render_breadcrumbs() ?> // Output: // Home > Dashboard > Relatórios
🎨 Helper Functions
set_breadcrumb()
Adiciona item ao breadcrumb.
set_breadcrumb(string $label, ?string $url = null): void
Exemplos:
set_breadcrumb('Home', '/'); set_breadcrumb('Produtos', 'products'); set_breadcrumb('Editar'); // Página atual
render_breadcrumbs()
Renderiza HTML dos breadcrumbs.
render_breadcrumbs(string $separator = '>'): string
Customizar:
// Com separador customizado <?= render_breadcrumbs(' / ') ?> // Home / Dashboard / Relatórios // Com classes CSS <?= render_breadcrumbs(' > ', 'breadcrumb-list') ?>
⚡ Performance: Caching
Cache Automático
Menus são automaticamente cacheados por 1 hora.
// Primeira chamada: Busca de todos os módulos $menus = MenuRegistry::all(); // Próximas chamadas (dentro de 1h): Retorna do cache $menus = MenuRegistry::all(); // Instantâneo!
Limpar Cache
Quando um módulo é ativado/desativado, o cache é automaticamente limpo.
Manual:
MenuRegistry::clearCache();
🔧 API Reference
MenuRegistry::all()
Retorna array consolidado de todos os menus dos módulos ativos.
$menus = MenuRegistry::all(); // [ // [ // 'label' => 'Dashboard', // 'url' => 'dashboard', // 'icon' => 'fas fa-tachometer-alt', // 'order' => 1 // ], // ... // ]
MenuRegistry::clearCache()
Limpa o cache de menus.
MenuRegistry::clearCache();
📦 Integração com Layouts
AdminLTE Example
<!-- app/Views/layouts/adminlte.php -->
<aside class="main-sidebar sidebar-dark-primary">
<div class="sidebar">
<nav class="mt-2">
<ul class="nav nav-pills nav-sidebar flex-column">
<?php
use Rahpt\Ci4ModuleNav\MenuRegistry;
$menus = MenuRegistry::all();
foreach ($menus as $item):
?>
<li class="nav-item">
<a href="<?= base_url($item['url']) ?>" class="nav-link">
<i class="nav-icon <?= $item['icon'] ?? 'fas fa-circle' ?>"></i>
<p><?= $item['label'] ?></p>
</a>
</li>
<?php endforeach; ?>
</ul>
</nav>
</div>
</aside>
Bootstrap Example
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<?php
$breadcrumbs = get_breadcrumbs();
$count = count($breadcrumbs);
foreach ($breadcrumbs as $index => $crumb):
$isLast = ($index === $count - 1);
?>
<li class="breadcrumb-item <?= $isLast ? 'active' : '' ?>">
<?php if ($isLast || empty($crumb['url'])): ?>
<?= $crumb['label'] ?>
<?php else: ?>
<a href="<?= base_url($crumb['url']) ?>">
<?= $crumb['label'] ?>
</a>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ol>
</nav>
🎨 Customização Avançada
Ordenação de Menus
public function menu(): array { return [ [ 'label' => 'Dashboard', 'order' => 1 // Primeiro ], [ 'label' => 'Configurações', 'order' => 100 // Último ] ]; }
Menus Condicionais
public function menu(): array { $menus = [ [ 'label' => 'Dashboard', 'url' => 'dashboard', 'icon' => 'fas fa-tachometer-alt' ] ]; // Adicionar apenas se usuário tem permissão if (auth()->user()->can('manage.users')) { $menus[] = [ 'label' => 'Usuários', 'url' => 'users', 'icon' => 'fas fa-users' ]; } return $menus; }
🧪 Testes
composer test
🕒 Histórico de Versões
[1.2.0] - 2026-02-26
- Bug Fix: Resolvido problema de colisão de cache entre usuários. O cache agora é segmentado por ID de usuário para suportar menus com dados dinâmicos (como UIDs de perfil).
- Melhoria: Refatoração da chave de cache para maior isolamento de dados entre sessões.
[1.1.0] - 2026-02-16
- Melhoria: Integrado suporte a Rota Nomeada (Alias) em
currentRoute(), tornando os breadcrumbs e menus ativos imunes a mudanças de URL. - Performance: Implementação de escuta de eventos (
rahpt.module.changed) para limpeza reativa de cache de menus, eliminando verificação manual de status. - Arquitetura: Uso do
Registrarpara carregamento automático de Eventos e Helpers.
[1.0.1] - 2026-02-15
- Versão inicial estável.
📄 Licença
MIT License
👏 Créditos
Desenvolvido por Rahpt
Versão: 1.2.0
Última Atualização: 2026-02-26
rahpt/ci4-module-nav 适用场景与选型建议
rahpt/ci4-module-nav 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 23 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 02 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「menu」 「codeigniter」 「modules」 「breadcrumbs」 「navigation」 「codeigniter4」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 rahpt/ci4-module-nav 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rahpt/ci4-module-nav 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 rahpt/ci4-module-nav 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This is Paymorrow module for OXID eShop.
A Symfony extension to get active class base on current bundle/controller/action
The CodeIgniter Redis package
Analysis module for finding problematical shop data.
yii2 swiper slider
An interactive tour through the TYPO3 backend.
统计信息
- 总下载量: 23
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 34
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-15