herrera-io/silex-bootstrap

此包已被废弃,不再维护。未建议替代包。

Silex 初始化项目。

安装: 60

依赖: 0

建议者: 0

安全: 0

星星: 4

关注者: 1

分支: 2

语言:CSS

类型:项目

1.0.1 2013-08-23 01:27 UTC

This package is not auto-updated.

Last update: 2021-12-07 01:37:01 UTC


README

Build Status

这是一个基于 Silex 微框架和 Bootstrap 前端框架的预制Web应用程序。Web应用程序已准备就绪,只需进行少量修改即可启动新项目。建议在继续之前对Silex和Bootstrap有一个扎实的理解。

要创建新项目,请运行

$ composer create-project herrera-io/silex-bootstrap myProject/

配置

位置

首先,你需要知道参数、服务和路由是通过使用 YAML 配置文件进行配置的。这些文件通过默认环境 prod 中的 WiseServiceProvider 服务提供者加载。

如果你知道服务提供者是如何工作的,你也会知道你可以完全更改使用的文件格式。你不仅可以使用 YAML,还可以使用 JSON、XML、INI,或者直接使用 PHP。YAML 被使用是因为这个初始化项目的大部分已经基于使用 YAML 严重的 Symfony。

什么 在哪里
参数 app/config/parameters.yml
服务 app/config/services.yml
路由 app/config/routes.yml

对于所有不是命名为 prod 的其他环境,配置文件将具有环境名称附加在文件扩展名之前的名称

什么 在哪里
参数 app/config/parameters_*.yml
服务 app/config/services_*.yml
路由 app/config/routes_*.yml

环境

活动环境由 APP_MODE 环境变量控制。当变量未设置时,使用默认值 prod。目前,Web应用程序仅识别三个环境

  • prod — 用于生产环境的实时Web应用程序。
  • dev — 用于调试Web应用程序。
  • test — 用于运行 PHPUnit 测试套件。

如果你打算使用 devtest 或其他用于调试或测试的模式,你还希望设置 APP_DEBUG 变量为 1(一个)。这将启用Silex中的调试模式。

配置

parameters.yml 文件定义了在 Silex 实例中直接设置的整个应用程序参数。由于 Silex 中参数的设置方式,你必须小心不要意外替换与你的参数名称相同的服务。

一旦加载并设置了整个应用程序参数,就注册来自 services.yml 的服务,然后是 routes.yml 中的路由。要了解这些是如何配置的,你必须阅读有关 WiseServiceProvider 的文档。

默认值

以下为默认注册的服务

  • Silex\Provider\FormServiceProvider
  • Silex\Provider\MonologServiceProvider
  • Silex\Provider\SessionServiceProvider
  • Herrera\Silex\Provider\TranslationServiceProvider
  • Silex\Provider\TwigServiceProvider
  • Silex\Provider\UrlGeneratorServiceProvider
  • Silex\Provider\ValidatorServiceProvider

当使用dev环境时,以下服务也会被注册

  • Silex\Provider\ServiceControllerServiceProvider
  • Silex\Provider\WebProfilerServiceProvider

test环境中,实际上会注销WebProfilerServiceProvider

自定义

Herrera\Silex\Application类使用三种方法来加载参数、服务和路由。如果发现通过文件配置不充分,可以替换或扩展这些方法。

  • registerDefaultParameters() — 加载参数。
  • registerDefaultServices() — 加载服务。
  • registerDefaultRoutes() — 加载路由。

你可能会发现无法通过配置文件正确地注册一个或多个服务。对于此类情况,你可以在自己的Application子类中执行以下操作:

use Herrera\Silex\Application;

/**
 * My custom version of the bootstrap application class.
 *
 * @author Example User <example@user.com>
 */
class MyApplication extends Application
{
    /**
     * {@override}
     */
    protected function registerDefaultServices()
    {
        parent::registerDefaultServices();

        // my custom registrations
    }
}

你也可以直接修改根目录中的src/lib/Herrera/Silex/Application中的应用程序类,而不是创建一个新的子类。这可能会更方便,但可能会在项目更新时增加维护的复杂性。

如果你创建了自己的子类,你将需要修改几个使用原始类的地方

  1. src/lib/Herrera/Silex/Test/TestCase.php中,你需要修改TestCase->createApplication()方法,使其返回你的类的一个实例,而不是默认实例。
  2. web/index.php中,你需要修改对方法Herrera\Silex\Application::create()的调用,使其调用你的类上的相同方法:Example\Subclass::create()

控制台

网络应用程序通过Go构建工具提供控制台支持。你可以通过编辑根目录中的Gofile来添加、编辑和删除自己的任务。

以下为默认任务

命令 描述
app:clear 删除app/cacheapp/logs的内容。
app:clear:cache 删除app/cache的内容。
app:clear:logs 删除app/logs的内容。
app:generate:docs 使用Sami生成API文档。
app:minify 使用Minify压缩JS和CSS资源。
app:run 使用内置服务器运行你的网络应用程序。
app:test 使用PHPUnit执行测试套件。

Sami

默认情况下,Sami配置在app/config/docs.php中。Sami配置为将解析的数据存储在app/cache/docs中,而最终渲染结果存储在根目录中的docs/

要生成API文档

$ bin/go app:docs

Minify

默认情况下,需要压缩的资源列表存储在app/config/assets.yml文件中。该文件组织成一个关联数组。键是压缩后文件将被保存的路径,值是待压缩的路径数组。

要压缩资源

$ bin/go app:minify

PHPUnit

默认情况下,测试用例存储在src/tests。PHPUnit也被配置为自动加载该目录下的类,如果它们不在src/lib目录中。

要启动PHPUnit

$ bin/go app:test

要生成代码覆盖率,只需传递选项--coverage(或-c)。任务将负责配置PHPUnit,以确保生成的HTML覆盖率报告存储在app/cache/coverage

翻译

默认情况下,翻译文件存储在app/translations。默认情况下,以下翻译文件已注册到翻译服务提供商

  • example.de.yml
  • example.en.yml
  • example.fr.yml

要使用您自己的翻译文件,建议您阅读有关TranslationServiceProvider服务提供商的文档。服务提供商将允许您执行其他操作,例如指定需要注册的加载类以加载您的翻译文件。这意味着您可以使用其他格式,如XLIFF,而不是YAML。

前端

前端使用以下工具构建

还提供了一种自定义表单主题,使用水平表单设计非常简单。Bootstrap支持的所有表单类型都由该主题支持。

{% extends "layout.html.twig" %}

{% form_theme myForm "form.html.twig" %}

{% block content %}
    <div class="container">
      <div class="row-fluid">
        <div class="span5 pull-both">
          <h1 class="page-header">Example Form</h1>
          {{ form(form) }}
        </div>
      </div>
    </div>
{% endblock %}