geeklabs / ci4-breadcrumbs
CodeIgniter 4 的面包屑导航
Requires
- php: ^8.0
README
CI4-Breadcrumbs
Codeigniter 4 的简单面包屑库
即将推出 V3.0
支持生成主流 CSS 框架的面包屑。
V2.0.9 已发布
版本 2.0.9 进行了一些重大更改。主要在于安装库的方式。整个库已经重新打包,现在支持将核心文件发布到您的应用程序中。
发布命令将在您的应用文件夹中创建一个名为 'modules' 的新目录。为什么是 'modules'?因为我们计划发布几个易于安装的模块,这些模块可以安装并保持您的应用程序结构整洁有序。
您现在可以选择手动构建面包屑或使用自动构建器。自动构建器将您的 URI 字符串分解成 Bootstrap 面包屑。
我们还添加了使用令人惊叹的 HalfMoon CSS 框架构建面包屑的选项。V3.0 将添加更多 CSS 框架。
通过 Composer 安装
composer require geeklabs/ci4-breadcrumbs
然后运行
php spark breadcrumbs:publish
您将被要求选择您正在使用的 CSS 框架。请选择并按回车键
目前您可以选择 Bootstrap 或令人惊叹的 HalfMoon 框架。V3.0 将添加更多框架。
What css framework are you using?:
[0] Bootstrap
[1] Halfmoon
加载到控制器中
use App\Modules\Breadcrumbs\Breadcrumbs;
如果您不想将库发布到项目中,而希望将其保持在 'vendors' 文件夹中,您可以使用 namespace 并省略 'php spark breadcrumbs:publish' 命令。
use Geeklabs\Breadcrumbs\Core\Breadcrumbs;
如果您不将库发布到项目中,并从 'vendors' 文件夹中调用它,您需要手动修改位于 'vendor/geeklabs/ci4-breadcrumbs/src/config/config.php' 的配置文件以选择正确的 CSS 框架。
用法
开箱即用的面包屑使用 Bootstrap 样式设置,例如。
<nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="#">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Library</li> </ol> </nav>
如果您想覆盖这些样式,添加额外的类等,您可以在 Breadcrumbs.php 的 __construct 函数中做到这一点。
V3.0 将添加更多 CSS 框架支持。如果您想添加特定的框架,请提交一个问题,我们将添加它。
要使用此库,首先将其加载到您的控制器中。
use App\libraries\Breadcrumb;
创建一个实例
$this->breadcrumb = new Breadcrumb();
自动构建
如果您希望简单的面包屑自动根据您的 URL 构建面包屑,您可以调用
$data['breadcrumbs'] = $this->breadcrumb->buildAuto();
然后简单地将其输出到您的视图中
<?php echo $breadcrumbs; ?>
完成了!就这么简单。
几乎完成了。现在,您的面包屑是根据您的 URI 自动生成的,当您构建路由时,您需要考虑一些额外的因素。例如,如果您有一个路由如
$routes->add('admin/customers/profile', 'Controller::index')
您的面包屑将是
Admin / Customer / Profile
因此,admin 和 customer 也必须为它们设置路由。
如果您希望您的面包屑保持可读性,您可以在 URI 分段中添加一个 - 来强制空格,例如
edit-customer = Edit Customer
手动构建
如果您想对面包屑有更多控制,您仍然可以手动构建它们。
构建您的面包屑
$this->breadcrumb->add('Home', '/'); $this->breadcrumb->add('Dashboard', '/dashboard'); $this->breadcrumb->add('Customers', '/customers');
确保在您的 URL 前包含 /
使用以下方式构建面包屑
$data['breadcrumbs'] = $this->breadcrumb->render();
将数据传递到您的视图中,然后
<?php echo $breadcrumbs; ?>
示例控制器
namespace App\Controllers; use CodeIgniter\Controller; use App\Modules\Breadcrumbs\Breadcrumbs; class Home extends Controller{ public $breadcrumb; public function __construct() { $this->breadcrumb = new Breadcrumb(); } public function index(){ $this->breadcrumb->add('Home', '/'); $this->breadcrumb->add('Dashboard', '/dashboard'); $this->breadcrumb->add('Customer', '/dashboard/customer'); $data['breadcrumbs'] = $this->breadcrumb->render(); return view('home', $data); } }