sergeyklay/breadcrumbs

Phalcon 2+中构建网站面包屑的强大且灵活的组件。

v1.4.2 2019-09-26 15:12 UTC

This package is auto-updated.

Last update: 2024-08-29 05:23:21 UTC


README

Breadcrumbs Screenshot

Phalcon Breadcrumbs是一个强大且灵活的组件,用于构建网站面包屑。您可以根据需要对其进行修改或改进。

如有任何反馈,请给我们写信。

谢谢!

注意

master分支将始终包含最新的稳定版本。如果您想检查旧版本或当前正在开发的较新版本,请切换到相应的分支/标签。

入门

要求

要使用此组件,您至少需要以下内容

注意:对旧版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(' &raquo; ');

使最后一个元素始终不是链接

<?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