nymo/silex-twig-breadcrumb-extension

Silex 的 Twig 面包屑扩展

v3.0.0 2018-06-03 11:05 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:33 UTC


README

这是一个 Twig 的面包屑扩展,包括一个为 Silex 使用的面包屑服务提供者,以便在 Silex 中轻松简单地使用面包屑。

Packagist Monthly Downloads Build Status Coverage Status

3.0 版本新增

  • 支持 PHP > 7.1
  • 包现在使用 PSR-4 自动加载器
  • 现在 BreadCrumbCollection 中的 addItem 方法已弃用,将在 3.1 版本中移除,请使用 addSimpleItemaddRouteItem 代替 (见下文)

路线图

由于 Silex 在 2018 年 6 月停止支持,这个扩展也将存档。将不再实现新功能。 我将把库迁移到 Symfony 4,因为这将是所有 Silex 应用程序的未来之路。

一般功能

  • 在您的 Silex 应用程序中轻松创建面包屑
  • 支持国际化
  • 可配置的分隔符
  • 模板覆盖
  • 支持命名路由

一般要求

  • Twig
  • 从版本 1.1.0 开始,为了支持国际化,必须在您的 PHP 环境中激活 gettext。

对于 PHP 5.3

  • Silex 1.x
  • 1.x 版本的 silex-twig-breadcrumb-extension

对于 PHP 5.6

  • Silex 2.x
  • 2.x 版本的 silex-twig-breadcrumb-extension

对于 PHP > 7.1

  • Silex 2.x
  • 3.x 版本的 silex-twig-breadcrumb-extension

安装

PHP 配置

请确保在您的 PHP 环境中已激活 gettext 功能。如需进一步帮助,请参阅官方 PHP 手册 https://php.ac.cn

通过 composer

首先将以下内容添加到您的 composer.json 文件中

"require":{
        "nymo/silex-twig-breadcrumb-extension":"~3.0"
    }

对于 Silex 2 和 PHP <= 5.6,请使用 2.x 版本。

Silex 1.x

"require":{
        "nymo/silex-twig-breadcrumb-extension":"~1.2"
    }

然后运行 composer update。

配置 Silex

我假设您已经有一个运行的 Silex 应用程序,并使用 Twig 作为模板引擎。首先注册面包屑服务提供者

$app->register(new \nymo\Silex\Provider\BreadCrumbServiceProvider());

然后注册 Twig 面包屑扩展。您必须在注册了 Twig 服务提供者之后定义此扩展,否则当使用 $app['twig'] 时,应用程序会抛出错误。

$app['twig'] = $app->extend('twig', function ($twig, $app) {
    $twig->addExtension(new \nymo\Twig\Extension\BreadCrumbExtension($app));

    return $twig;
});

Silex 1.x

$app['twig'] = $app->share(
    $app->extend(
        'twig',
        function ($twig, $app) {
            $twig->addExtension(new \nymo\Twig\Extension\BreadCrumbExtension($app));
            return $twig;
        }
    )
);

这就是全部内容。现在您可以开始了。

用法

在安装成功后,您可以在任何地方添加面包屑项目。您只需要调用面包屑服务并添加一个项目。

新风格

$app['breadcrumbs']->addSimpleItem('Silex rocks', 'http://silex.sensiolabs.org/');
$app['breadcrumbs']->addSimpleItem('PHP', 'https://php.ac.cn');

容器中的最后一个项目总是以纯文本形式打印,不带标签。您也可以添加一个不带 URL 的面包屑项目。然后,此面包屑项目也将以纯文本形式打印。

$app['breadcrumbs']->addSimpleItem('Just some text');

旧风格已弃用

$app['breadcrumbs']->addItem('Silex rocks', 'http://silex.sensiolabs.org/');
$app['breadcrumbs']->addItem('PHP', 'https://php.ac.cn');

容器中的最后一个项目总是以纯文本形式打印,不带标签。您也可以添加一个不带 URL 的面包屑项目。然后,此面包屑项目也将以纯文本形式打印。

$app['breadcrumbs']->addItem('Just some text');

命名路由

您还可以使用命名路由。此扩展支持两种类型的命名路由:简单路由和带参数的复杂路由。在开始添加命名路由之前,您必须注册(如果尚未注册)Silex UrlGeneratorServiceProvider。

$app->register(new Silex\Provider\UrlGeneratorServiceProvider());

然后,将此 URL 生成器添加到面包屑集合中。

$app['breadcrumbs']->setUrlGenerator($app['url_generator']);

现在您可以开始了。

简单命名路由

如果您有一个没有所需参数的简单路由,您可以将此路由添加到面包屑集合中,如下所示

新风格

$app['breadcrumbs']->addRouteItem('A simple route', ['route' => 'simple_named_route']);

旧风格已弃用

$app['breadcrumbs']->addItem('A simple route',array('route' => 'simple_named_route'));

复杂命名路由

复杂命名路由的添加方式与简单命名路由相同。需要额外做的是,将一个包含所需参数的数组作为第二个值传递给数组。

新风格

$app['breadcrumbs']->addRouteItem('A complex route', [
        'route' => 'complex_named_route',
        'params' => [
            'name' => "John",
            'id' => 3
        ]
    ]);

旧风格已弃用

$app['breadcrumbs']->addItem('A complex route',array(
        'route' => 'complex_named_route',
        'params' => array(
            'name' => "John",
            'id' => 3
        )
    ));

在 Twig 中渲染面包屑

在您的 Twig 模板中,您可以使用此函数来渲染面包屑

{{renderBreadCrumbs()}}

默认模板渲染一个无序列表。最后一个项目有一个名为lastItem的CSS类。您可以覆盖此模板。只需将vendor文件夹中的breadcrumbs.html.twig模板复制到您的视图路径中。

国际化支持

从版本1.1.0开始,此扩展支持国际化。每个链接名称都有一个可选的翻译过滤器,仅在您使用翻译服务提供商时才会激活。有关更多信息,请参阅Silex文档。

可选配置

此扩展包含一个小的配置选项,可用于可选。默认情况下,用于面包屑的分隔符是>符号。如果您想更改它,可以在注册Twig扩展时传递您自己的分隔符。

$app['twig']->addExtension(new \nymo\Twig\Extension\BreadCrumbExtension($app),array("breadcrumbs.separator" => "::"));