chh/frozen-silex

将您的Silex应用程序转换为静态HTML

v1.0.1 2013-11-23 20:46 UTC

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。