phalcongelist / breadcrumbs
v1.4.2
2019-09-26 15:12 UTC
Requires
- php: >= 5.5 <8.0
- ext-phalcon: >=2.0 <4.0
Conflicts
README
Phalcon Breadcrumbs是一个强大且灵活的组件,用于构建网站的面包屑。您可以将其适应自己的需求或根据自己的需要改进。
如果您有任何反馈,请给我们留言。
谢谢!
注意
master
分支将始终包含最新的稳定版本。如果您希望检查旧版本或当前正在开发的较新版本,请切换到相应的分支/标签。
入门
要求
要使用此组件,您至少需要
- Composer
- PHP >= 5.5
- Phalcon 框架版本启用 >= 2.x < 4.x
注意:对旧PHP版本(到7.0)的支持将尽力提供。
安装
$ composer require sergeyklay/breadcrumbs
定义您的面包屑
我们建议将其注册到应用程序的服务中,以便更易于使用
<?php use Phalcon\Breadcrumbs; // Initialize the Breadcrumbs component. $di->setShared('breadcrumbs', function () { return new Breadcrumbs; });
添加带有链接的面包屑
<?php $this->breadcrumbs->add('Home', '/');
添加不带链接的面包屑(通常是最后一个)
<?php $this->breadcrumbs->add('User', null, ['linked' => false]);
输出面包屑
PHP 引擎
<ol class="breadcrumb"> <?php $this->breadcrumbs->output(); ?> </ol>
Volt 引擎
<ol class="breadcrumb"> {{ breadcrumbs.output() }} </ol>
更改面包屑分隔符
<?php $this->breadcrumbs->setSeparator(' » ');
确保最后一个元素始终不是链接
<?php $this->breadcrumbs->setLastNotLinked(true);
删除面包屑(通过URL)
<?php $this->breadcrumbs->remove('/admin/user/create'); // remove a crumb without an url $this->breadcrumbs->remove(null);
更新现有面包屑
<?php $this->breadcrumbs->update('/admin/user/remove', ['label' => '<strong class="red">Remove</strong>']);
计算面包屑数量
<?php $this->breadcrumbs->count();
设置渲染模板
<?php $this->breadcrumbs->setTemplate( '<li><a href="{{link}}">{{icon}}{{label}}</a></li>', // linked '<li class="active">{{icon}}{{label}}</li>', // not linked '<i class="fa fa-dashboard"></i>' // first icon );
多语言支持
<?php use Phalcon\Translate\Adapter\NativeArray as Translator; use Phalcon\Breadcrumbs; $messages = [ 'crumb-home' => 'Home', 'crumb-user' => 'User', 'crumb-settings' => 'Settings', 'crumb-profile' => 'Profile', ]; // Initialize the Translate adapter. $di->setShared('translate', function () use ($messages) { return new Translator(['content' => $messages]); }); // Initialize the Breadcrumbs component. $di->setShared('breadcrumbs', function () { return new Breadcrumbs; });
错误日志
<?php use Phalcon\Logger\Formatter\Line as FormatterLine; use Phalcon\Logger\Adapter\File as FileLogger; use Phalcon\Breadcrumbs; /** * Initialize the Logger. * * @var $config array * @var $di \Phalcon\Di */ $di->setShared('logger', function ($filename = null, $format = null) use ($config) { $formatter = new FormatterLine($config->get('logger')->format, $config->get('logger')->date); $logger = new FileLogger($config->get('logger')->path . $config->get('logger')->filename); $logger->setFormatter($formatter); $logger->setLogLevel($config->get('logger')->logLevel); return $logger; }); // Initialize the Breadcrumbs component. $di->setShared('breadcrumbs', function () { return new Breadcrumbs; });
事件
<?php use Phalcon\Breadcrumbs; use Phalcon\Events\Manager as EventsManager; // Initialize the Events Manager. $di->setShared('eventsManager', function () { return new EventsManager; }); // Initialize the Breadcrumbs component. $di->setShared('breadcrumbs', function () use ($di) { $manager = $di->getShared('eventsManager'); $manager->attach('breadcrumbs', function ($event, $connection) { // We stop the event if it is cancelable if ($event->isCancelable()) { // Stop the event, so other listeners will not be notified about this $event->stop(); } // Receiving the data from the event context print_r($event->getData()); }); $breadcrumbs = new Breadcrumbs; $breadcrumbs->setEventsManager($manager); return $breadcrumbs; });
可用事件
breadcrumbs:beforeAdd
breadcrumbs:afterAdd
breadcrumbs:beforeOutput
breadcrumbs:afterOutput
breadcrumbs:beforeTranslate
breadcrumbs:afterTranslate
breadcrumbs:beforeLogging
breadcrumbs:afterLogging
breadcrumbs:beforeRemove
breadcrumbs:afterRemove
breadcrumbs:beforeUpdate
breadcrumbs:afterUpdate
breadcrumbs:beforeSetTemplate
breadcrumbs:afterSetTemplate
版权
Phalcon Breadcrumbs是开源软件,根据新BSD许可授权。© Serghei Iakovlev