limenius / filesystem-router-bundle
Symfony 静态页面路由器
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-24 22:11:30 UTC
README
此包提供了一个 Symfony 链式路由器,它为目录中的静态文件添加路由。
使用场景:您可能想集成静态内容生成引擎(Sphinx、Jekyll 等)的产品,或者您只是目录中有些 HTML 文件,并希望它们成为您的 Symfony 应用程序中的路由,因为您想,例如...
- 将大量静态 HTML 文档嵌入到 Twig 模板中,带有菜单、侧边栏。
- 为它们生成路由。
- 预处理它们,例如提取标题。
- ...
使用方法
安装
打开命令控制台,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本:
$ composer require limenius/filesystem-router-bundle
配置
此包使用 Symfony CMF 动态路由器,因此我们需要在 app/config.yml
文件中对其进行配置
cmf_routing:
chain:
routers_by_id:
router.default: 200
cmf_routing.dynamic_router: 100
dynamic:
route_provider_service_id: limenius_filesystem_router.route_provider
templates_by_class:
Limenius\Bundle\FilesystemRouterBundle\Document\ContentDocument: MyBundle:MyController:my_template.html.twig
在最后一行,我们指定了处理静态内容的模板。
此外,我们还添加了一些行来配置此包
limenius_filesystem_router:
collections:
Docs:
path: "%kernel.root_dir%/Resources/my_static_directory/"
prefix: doc
collections
是您想要路由的目录列表。每个集合都有一个必需的 path
和一个可选的 prefix
。此包将在路径中递归地找到每个 html
文件,并为它们创建路由。
我们指定的模板将有一个 contentDocument
可用
{{ contentDocument |raw }}
自定义控制器
我们可以通过配置动态路由器来指定将接收文档的控制器
cmf_routing:
chain:
routers_by_id:
router.default: 200
cmf_routing.dynamic_router: 100
dynamic:
route_provider_service_id: limenius_filesystem_router.route_provider
controllers_by_type:
filesystem_route: Acme\MyBundle\Controller\MyController::myAction
在最后一行,我们指定了处理静态内容的操作。
该操作将在变量 $contentDocument
中接收文件的全部内容。
它可以非常简单,例如
/**
* @Template()
*/
public function docsAction($contentDocument)
{
return array('content' => $contentDocument);
}
带有包含以下内容的模板
{{ content | raw }}
当然,您可以对处理 $contentDocument
的文档进行预处理,例如爬取以提取标题或其他信息。
使用 app/console router:debug
命令检查您的新路由。
路由生成
使用文件的路径,如 <a href="{{ url('manual/index.html')}}">文档</a>
公开文件
默认情况下,此包将仅公开扩展名为 html
的文件。您可以通过 extensions_exposed
选项进行配置。
limenius_filesystem_router:
collections:
Docs:
path: "%kernel.root_dir%/Resources/my_docs/_build/html"
prefix: docs
extensions_exposed: ['html', 'txt']
许可证
此包受 MIT 许可证的约束。请参阅文件中的完整许可证。
LICENSE.md