herrera-io / silex-bootstrap
Silex 初始化项目。
Requires
- php: >=5.4.0
- herrera-io/silex-active-link: ~1.0
- herrera-io/silex-translation-files: ~1.1
- herrera-io/silex-wise: ~2.0
- monolog/monolog: ~1.6
- silex/silex: ~1.0
- symfony/config: ~2.3
- symfony/form: ~2.3
- symfony/translation: ~2.3
- symfony/twig-bridge: ~2.3
- symfony/validator: ~2.3
- symfony/yaml: ~2.3
- twig/twig: ~1.9
Requires (Dev)
- herrera-io/file-system-functions: ~1.0
- herrera-io/go: ~2.0
- herrera-io/phpunit-test-case: ~1.0
- mrclay/minify: ~2.1.7
- phpunit/phpunit: ~3.7
- sami/sami: ~1.1
- silex/web-profiler: ~1.0
- symfony/browser-kit: ~2.3
This package is not auto-updated.
Last update: 2021-12-07 01:37:01 UTC
README
这是一个基于 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
测试套件。
如果你打算使用 dev
、test
或其他用于调试或测试的模式,你还希望设置 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
中的应用程序类,而不是创建一个新的子类。这可能会更方便,但可能会在项目更新时增加维护的复杂性。
如果你创建了自己的子类,你将需要修改几个使用原始类的地方
- 在
src/lib/Herrera/Silex/Test/TestCase.php
中,你需要修改TestCase->createApplication()
方法,使其返回你的类的一个实例,而不是默认实例。 - 在
web/index.php
中,你需要修改对方法Herrera\Silex\Application::create()
的调用,使其调用你的类上的相同方法:Example\Subclass::create()
控制台
网络应用程序通过Go构建工具提供控制台支持。你可以通过编辑根目录中的Gofile
来添加、编辑和删除自己的任务。
以下为默认任务
命令 | 描述 |
---|---|
app:clear |
删除app/cache 和app/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 2.3.2
- Font Awesome 3.2.1
- jQuery 1.10.2
- jQuery Migrate 1.2.1
- Twig 1.9+
还提供了一种自定义表单主题,使用水平表单设计非常简单。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 %}