chh / frozen-silex
将您的Silex应用程序转换为静态HTML
v1.0.1
2013-11-23 20:46 UTC
Requires
- php: >=5.3.3
- silex/silex: ~1.0
- symfony/browser-kit: ~2.1
- symfony/console: ~2.1
Requires (Dev)
- symfony/twig-bridge: ~2.0
- twig/twig: ~1.0
This package is not auto-updated.
Last update: 2024-09-14 14:01:18 UTC
README
为Silex构建的静态站点生成器。
这是一个概念证明,可能不会对您适用。一些已知问题包括
- 生成的站点只能在服务器的根目录下工作。
- 由于URL未重写为相对路径,因此无法在没有服务器的情况下浏览生成的站点。
安装
在您的Silex应用程序的composer.json
中要求chh/frozen-silex
。
入门指南
使用您的Silex\Application
对象创建一个Freezer实例,并调用其freeze
方法
<?php
$freezer = new \FrozenSilex\Freezer(require('app.php'));
$freezer->freeze();
这将在当前工作目录中创建一个build
目录,并将您的应用程序的控制器作为静态HTML文件存储。
查找URL
Frozen Silex通过查看Silex的routes
服务中定义的所有路由,从UrlGenerator获取URL名称,然后通过Symfony BrowserKit Component触发虚拟请求来工作。
以下URL可以自动找到
- 响应
GET
请求的Silex路由。 - 由
url_generator
服务生成的URL。
通过url_generator
生成的链接无法访问的页面可以通过编写URL生成器来使其可访问。
URL生成器
URL生成器是回调函数,返回Freezer应该触发的额外URL数组。URL可以是简单的字符串(然后被视为URL)或路由名称和参数的元组,然后通过URL生成器传递。
示例:如果您有用户无法通过索引页面访问
<?php
$app->get('/users/{id}', function($id) { /* Code here */ })->bind('show_user');
$freezer = new \FrozenSilex\Freezer($app);
$freezer->registerGenerator(function() use ($app) {
$users = [];
foreach ($app['db']->users->find() as $user) {
$users[] = ['show_user', ['id' => (string) $user['_id']]];
}
return $users;
});
配置
以下配置键来自App实例
freezer.destination
(默认:build
):生成静态文件的目录,默认在当前工作目录中的build
。freezer.override_url_generator
(默认:true
):用自定义的URL生成器覆盖应用程序的URL生成器,冻结所有生成的URL。