nymo / silex-twig-breadcrumb-extension
Silex 的 Twig 面包屑扩展
Requires
- php: >=7.1
- silex/silex: ^2.0
- symfony/twig-bridge: ^4.0
- twig/twig: ^2.0
Requires (Dev)
- php-coveralls/php-coveralls: ~2.0
- phpmd/phpmd: ~2.0
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ~3.0
- symfony/translation: ^3.0
README
这是一个 Twig 的面包屑扩展,包括一个为 Silex 使用的面包屑服务提供者,以便在 Silex 中轻松简单地使用面包屑。
3.0 版本新增
- 支持 PHP > 7.1
- 包现在使用 PSR-4 自动加载器
- 现在 BreadCrumbCollection 中的 addItem 方法已弃用,将在 3.1 版本中移除,请使用 addSimpleItem 或 addRouteItem 代替 (见下文)
路线图
由于 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" => "::"));