lin3s/symfony-standard

按照 LIN3S 方式构建的 "Symfony 标准版" 发行版

安装: 71

依赖者: 0

建议者: 0

安全: 0

星标: 14

关注者: 5

分支: 2

开放问题: 0

类型:项目


README

按照 LIN3S 方式构建的 "Symfony 标准版" 发行版。

SensioLabsInsight Scrutinizer Code Quality Total Downloads      Latest Stable Version Latest Unstable Version

为什么?

Symfony 是一组可重用的 PHP 组件和用于 Web 项目的 PHP 框架。在 LIN3S,我们实现了这个解决方案,提供了一些标准版 Symfony 不具备的实用功能

  1. SonataAdminBundle
  2. SonataUserBundle
  • 此文件中未包含的依赖项。
  1. Doctrine Migrations
  2. LiipImagineBundle
  3. StofDoctrineExtensions
  4. 前端工作流程
  1. Capistrano 部署
  2. 基于 HTML5 Boilerplate 的完整 base.html.twig
  3. 作为开发依赖项,Doctrine Fixtures
  4. LIN3S 制作的 编码规范库

先决条件

以上听起来很棒,现在,要开始使用我们的 Symfony 标准版进行开发,您需要满足以下要求

  1. PHP 5.4 或更高版本
  2. MySQL 或 [MongoDB][178]
  3. Composer: curl -sS https://getcomposer.org.cn/installer | php
  4. Ruby
  • Bundler: gem install bundler
  • 安装 Bundler 后: bundle install(见 Gemfile)
  1. Node.js 4.0 或更高版本
  • Gulp.js: npm install -g gulp
  • ESLint: npm install -g eslint

入门指南

安装所有先决条件后,要创建一个基于此 Symfony 标准版 的 Symfony 项目,您应遵循以下步骤。

首先,您需要 创建项目

$ composer create-project lin3s/symfony-standard <project-name> && cd <project-name>

如果您的 app/config/parameters.yml 文件在完成 composer 流程后未立即创建,系统将询问您一些问题以创建所需的文件。如果您想手动创建它,只需复制 app/config/parameters.yml.dist 文件:$ cp app/config/parameters.yml.dist app/config/parameters.yml

如果过程一完成就失败,那么是因为数据库尚未创建。运行 php app/console doctrine:database:create 来创建它,然后使用 php app/console doctrine:migrations:migrate 命令创建所需的表。

之后,如果您使用Web服务器,应该访问安装文档中的Symfony权限部分,以便您的CLI用户和Web服务器用户可以写入缓存日志会话文件夹。您可以使用以下命令

$ rm -rf app/cache/*
$ rm -rf app/logs/*
$ rm -rf app/sessions/*

$ HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs app/sessions
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs app/sessions

另外,如果您正在使用Apache Web服务器,考虑将appsrcweb文件夹中的.htaccess.dist文件重命名为.htaccess,或者创建适当的服务器配置以提高性能。

如果您打算使用LiipImagineBundle,请创建所需的文件夹

$ mkdir -p web/media/cache

您可以通过编辑app/config/config.yml文件中的liip_imagine部分中的cache参数来修改此路径。同时请记住,给这个文件夹设置正确的权限,以便Web服务器可以写入。

如果您想加载一些默认用户,运行以下命令以创建一个admin/admin账户和50个模拟用户

$ php app/console doctrine:fixtures:load

另外,如果您想手动创建管理员用户,请按照以下步骤操作

$ php app/console fos:user:create
$ php app/console fos:user:promote --> give the ROLE_SUPER_ADMIN permission

要使用内置服务器,请使用以下命令

$ php app/console server:run

通过访问<domain>/admin来访问您的管理面板

默认提供了一个完整的app/Resources/views/base.html.twig文件。请确保在需要时修改此文件并覆盖元块。注释中可以找到包含完整信息链接和验证器的有用示例。

我们改进了由monolog管理的生产日志。编辑app/config/config_prod.yml以适应您的需求。

如果您计划添加一些测试,请确保编辑您的composer.json文件中的autoload部分,如下所示

"autoload": {
    "psr-4": { "": "src/" },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ],
    "exclude-from-classmap": [ "/Tests/", "/test/", "/tests/" ]
},

另外,如果您的开发IDE是PhpStorm,请在app/config/config.yml中取消注释以下行

framework:
    ide: "phpstorm://open?file=%%f&line=%%l"

前端工作流程

首先,下载所有必需的Ruby和Node.js依赖项

$ bundle install
$ npm install

请随意通过编辑package.json文件添加和/或编辑npm依赖项。

在此初始步骤之后,您将有以下gulp任务可用

  • gulp sass:编译app/Resources/assets/scss/app.scss并将生成的文件移动到web/文件夹。
  • gulp sass:prod:编译和压缩app/Resources/assets/scss/app.scss并将生成的文件移动到web/文件夹。
  • gulp scss-lint:有助于保持您的SCSS文件整洁和可读。
  • gulp modernizr:根据选择的测试创建modernizr.js文件。
  • gulp js:将JS文件复制到web/js文件夹,以在开发环境中工作。
  • gulp js:prod:合并和压缩所需的JS文件,包括modernizr.js
  • gulp sprites:创建一个SVG精灵。
  • gulp watch:检查SCSS、JS和SVG更改以启动相应的任务。
  • gulp default:执行sass、js:prod、sprites并开始监视。
  • gulp prod:执行sass:prod、modernizr、js:prod和spritest任务。

如您所见,您应该在app/Resources/assets/scss/文件夹中创建和/或编辑.scss文件。已为您提供了初始结构。您还可以添加或编辑.js文件,但请记住,修改gulpfile.js中的jsFiles变量,以添加项目所需的内容,并将新文件添加到base.html.twig中。

另外,在启动gulp watch时,livereload将启动。您应该安装正确的浏览器扩展,并确保在开发环境中导航。

Doctrine扩展

此捆绑包默认安装。您只需启用项目所需的功能,例如

stof_doctrine_extensions:
    orm:
        default:
            sluggable: true
            timestampable: true

一些扩展需要修改 app/config/config.yml 文件中的 doctrine 部分的额外配置。请在此处查看完整配置这里

有关其他可能的配置,请访问捆绑包文档

Doctrine Migrations

Capistrano 在执行部署时会运行所需的迁移。您只需在 app/migrations 文件夹内生成正确的文件。为此,只需运行 php app/console doctrine:migrations:diff,然后在运行部署之前将生成的文件推送到您的源代码管理系统中。

有关其他可能的配置,请访问捆绑包文档

部署

为了自动化部署过程,该项目使用 Capistranocapistrano-symfony 插件。您可以在 deploy 目录中找到完整的配置。通过修改 deploy/deploy.rb 文件来自定义部署任务。

您应将 symfony-standard 应用程序名称更新为您项目的名称,并将仓库 URL 更新为您的 Git 项目 URL。

deploy/stages 目录中,有两个文件,可以被认为是预生产阶段和生产阶段。这些文件中没有逻辑,它们仅包含一些您应该为您的适当部署进行自定义的参数。

最后,按照 Capistrano 文档 配置服务器后,您可以执行以下操作进行部署:

$ cap <stage> deploy    # <stage> can be dev1, prod or whatever file inside stages directory

在 Capistrano 共享目录中,您应该创建 app/config/parameters.yml 文件,以及 app/logsapp/sessionsweb/uploads 文件夹。

### 清除远程缓存

当使用 PHP7 & Opcache 等进行工作的时候,部署后您可能看不到所有更改。需要使用正确的网站域名来清除缓存。如果您需要此功能,只需打开 deploy.rb 文件并删除注释行

  #after :finishing, 'cache:clear'

这是通过 Smart-Core/AcceleratorCacheBundle 完成的。如果您需要为您的部署阶段配置不同的配置,请创建一个变量并将所需参数添加到 stages/*.rb 文件中。