adr1enbe4udou1n/laravel-boilerplate

基于 Bootstrap 4 和 Tabler 的 Laravel 5.7 后端模板。

v2.4.0 2017-06-01 01:05 UTC

README

这是一个基于 Bootstrap 4 的启动网站,具有轻量级博客功能、用户账户注册/管理以及基于 Laravel 5.7 的完整 Vue Tabler 后端。

Build Status StyleCI License code style: prettier

演示

功能

前端

  • Bootstrap 4 前端,包含基本首页、关于、联系和法律声明页面
  • 集成 Slick 滚动Cookie 允许
  • 博客部分,包括标签和作者导航
  • 使用缓存插件动态优化图像的 Intervention 图像
  • 集成 Turbolinks 以实现快速导航
  • 通过 recaptcha 和 密码强度计 进行登录限制
  • 前端用户空间和配置管理。包括电子邮件验证。可以通过环境参数禁用注册
  • 包含所有受支持的社会化平台(Facebook/Twitter/LinkedIn/GitHub/Bitbucket)的 Laravel Socialite

后端

底层

  • 基于 Bootstrap 4 的 Tabler 主题,包含许多实用插件(SweetAlert2FlatpickrCKEditor 5 等)
  • 完全使用 Vue 组件编写,感谢 Bootstrap-Vue,无 jQuery 依赖
  • Vue-route 实现即时客户端导航
  • 原生的 Vue Datatable,带有全范围搜索输入和批量操作功能
  • 所有主要 CRUD 操作都通过 Ajax 实现了
  • 原生的 vue-select 组件,用于强大的选择系统(自动完成、标签等)
  • 集成到 DataTables 中的 Excel 导出(感谢 Maatwebsite)和批量操作
  • 即时搜索引擎(用于帖子)感谢 Laravel ScoutTNTSearch

包含的功能

  • 用户和权限管理(经典用户 <-> 角色 <-> 权限结构)
  • 模拟功能,用于快速测试用户上下文
  • 前端表单模块,包括设置(收件人和可翻译消息确认)及提交管理
  • 前端博客的帖子管理,具有细粒度的发布权限(经典草稿-待发布-已发布工作流)。帖子包括标题、摘要、HTML正文、标签、特色图片、元数据。它们可以在特定的日期时间发布和/或取消发布,如果需要的话可以固定。
  • 所见即所得的拖放图像上传。

本地化和SEO

  • 多语言支持得益于Laravel Localization包。每个路由的URL都带有语言前缀,以获得最佳的SEO支持。对于此模板,EN、FR语言100%支持,包括翻译的路由。
  • 由于Codedeep,增加了西班牙语语言。
  • 由于AhmadOf,增加了支持RTL的阿拉伯语语言。
  • 由于Limych,增加了俄语语言。
  • 使用Spatie Laravel Translatable支持模型可翻译字段(JSON格式),用于元标签和帖子。
  • 集成了机器人文件和网站地图,包括多语言替代项。
  • 完整的元标签管理界面,具有可翻译的标题和描述。元实体可以是与路由或特定实体(如帖子)链接的。
  • 301/302重定向管理界面,具有CSV导入功能。

开发者特定

  • 使用Spatie Laravel Medialibrary包来管理可排序的媒体模型,用于帖子上的特色图片。
  • 基于配置文件而非数据库进行权限配置。
  • 在配置文件中定义表单类型以支持设置和提交。此模板仅包含一个“联系表单”类型。
  • 使用自定义Webpack集成而不是Laravel Mix,以获得更好的灵活性(见下文)。

安装

需求

  • PHP 7.1
  • 带有JSON支持的MySQL 5.7或PostgreSQL

对于MariaDB,您可以使用此laravel-mariadb包

Deploy

  1. composer create-project --prefer-dist --stability=dev adr1enbe4udou1n/laravel-boilerplate my-new-project
  2. .env.example设置数据库和环境变量。
  3. 如果需要,将Web写入权限设置为bootstrap/cachestorage文件夹。
  4. 运行以下命令

对于本地/开发

composer install
php artisan key:generate
php artisan storage:link
php artisan migrate [--seed]

对于生产

# Running this on development environment will throw error so run below command only on production
composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan storage:link
php artisan migrate --force

初始化帖子搜索索引

php artisan scout:import "App\Models\Post"

Laravel Scout负责在创建、更新和删除(CUD)操作中更新帖子索引。

使用docker-compose安装

安装后,网站将在127.0.0.1:8080上可用

Mac和Linux开发环境

首先需要构建容器

docker-compose build

之后,必须启动容器

docker-compose up

设置您的应用程序

docker exec -it boilerplate-php-fpm php /app/artisan key:generate \
	&& docker exec -it boilerplate-php-fpm php /app/artisan storage:link

.env.docker重命名为.env并应用迁移

docker exec -it boilerplate-php-fpm php /app/artisan migrate

或使用演示数据应用迁移

docker exec -it boilerplate-php-fpm php /app/artisan migrate --seed

Mac和Linux生产环境

docker-compose build

之后,必须启动容器

docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

设置您的应用程序

docker exec -it boilerplate-php-fpm php /app/artisan key:generate \
	&& docker exec -it boilerplate-php-fpm php /app/artisan storage:link

.env.docker重命名为.env并应用迁移

docker exec -it boilerplate-php-fpm php /app/artisan migrate

使用make文件安装

部署开发

运行

make build
make start.dev

首次启动后,将.env.docker重命名为.env并按照以下命令应用迁移

make install.dev

部署生产

运行

make build
make start.prod

首次启动后,将.env.docker重命名为.env并按照以下命令应用迁移

make install.prod

在Windows上安装

首先设置您的Docker环境

  • 在命令行: set COMPOSE_CONVERT_WINDOWS_PATHS=1;
  • 重启Docker for Windows;
  • 转到Docker for Windows设置 > 共享驱动 > 重置凭证 > 选择驱动 > 应用;
  • 重新打开命令行
  • 杀死容器(如果您已启动任何容器)
  • 重新运行容器(如果您已运行任何容器)
  • 从命令行登录docker,因为docker登录gui与docker登录cli是分开的。另外请注意,您不需要使用电子邮件,您需要输入docker id
Note, if the prompt from the needed drive disapears after restarting the container
You may have to reset your docker:
Go to Docker for Windows settings > Reset > Reset to factory defaults...

然后您可以继续使用Mac and Linux安装说明部分

后端访问

首次注册的用户将自动成为超级管理员,无任何限制,且无法被删除。前端和后端都有专门的登录页面。

开发笔记

使用 Webpack 编译资源

  1. 使用 yarn 安装依赖
  2. 运行 yarn dev 以编译资源并启动带有 HMR(推荐快速构建管理员的方式)的 dev-server

N1:使用 DEV_SERVER_PORT 变量配置 Webpack Dev Server 的本地端口
N2:使用 DEV_SERVER_URL 配置从您的主机访问 Webpack Dev Server 的 HTTP,尤其是在您在 homestead/docker 上工作的时候,特别有用
N3:如果您喜欢老式监视器,请使用 yarn watch
N4:如果资源被修改,别忘了在部署到生产环境之前运行 yarn prod

权限定义

与其他已知项目(如 ENTRUSTlaravel-permission)不同,它们非常适合通用角色/权限,我更喜欢一个更轻量级且集成的自定义解决方案。

主要区别在于,不是将所有权限存储到特定的 SQL 表中,而是在特定的配置文件中直接定义权限。在 SQL 方面,角色实体只依赖于权限键名的列表。

实际上,我认为这种做法对于可维护性更好,因为权限很少与 Laravel 授权绑定。这在 CMS(如 Drupal)中也是一个标准方式,其中每个模块都有自己的特定配置权限文件。权限应该只由开发者拥有。

关于 Laravel Mix 的说明

您会发现这个模板没有使用 Laravel Mix,它是 Laravel 的一部分,用于所有资源管理。

由于 Jeffrey Way 的类似 Laravel 的 webpack 流畅 API,Laravel Mix 仍然对新用户很有帮助,但是,尽管 Laravel Mix 可以轻松覆盖,为了这个项目,我更喜欢使用我的自定义无框架 webpack 设置,以便完全控制资源工作流程。

例如,使用这个自定义设置,HMR 可以与可配置的端口(对于简单的 vue 管理员开发至关重要)原生工作,并且生产资源被打包到特定的 "dist" 目录中。

代码风格

PHP-CS-Fixer 和 ESLint 用于服务器和客户端代码的严格风格指南。

PHP 已预配置为官方 Laravel 风格,只需运行 ./vendor/bin/php-cs-fixer fix 即可进行全局项目的自动格式化。

JS 使用 Prettier Standard Style,webpack 内部使用 eslint-loader 进行动态代码风格建议。
此外,包含 Vue.js 的官方 ESLint 插件,以确保所有组件的 vue 文件都具有一致的代码。

TODO

  • 包含单元/特性/浏览器测试(目前待定)

许可证

本项目是开源软件,许可协议为 MIT 许可证