adr1enbe4udou1n / laravel-boilerplate
基于 Bootstrap 4 和 Tabler 的 Laravel 5.7 后端模板。
Requires
- php: ^7.0
- arcanedev/no-captcha: ^4.0
- davejamesmiller/laravel-breadcrumbs: ^3.0
- guzzlehttp/guzzle: ^6.2
- hieu-le/active: ^3.3
- intervention/image: ^2.3
- intervention/imagecache: ^2.3
- laravel/dusk: ^1.1
- laravel/framework: 5.4.*
- laravel/tinker: ~1.0
- laravelcollective/html: ^5.4
- mcamara/laravel-localization: ^1.2
- roumen/sitemap: ^2.6
- yajra/laravel-datatables-html: ^1.1
Requires (Dev)
- barryvdh/laravel-debugbar: ^2.3
- barryvdh/laravel-ide-helper: ^2.2
- doctrine/dbal: ^2.5
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~6.0
- dev-master
- v2.4.0
- v1.4.0
- v1.0.0
- dev-dependabot/npm_and_yarn/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/lodash-4.17.21
- dev-dependabot/npm_and_yarn/url-parse-1.5.1
- dev-dependabot/composer/phpoffice/phpspreadsheet-1.12.0
- dev-dependabot/composer/composer/composer-1.10.22
- dev-dependabot/npm_and_yarn/ssri-6.0.2
- dev-dependabot/npm_and_yarn/y18n-3.2.2
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/axios-0.21.1
- dev-dependabot/npm_and_yarn/ini-1.3.7
- dev-dependabot/npm_and_yarn/http-proxy-1.18.1
- dev-dependabot/npm_and_yarn/lodash.mergewith-4.6.2
- dev-dependabot/npm_and_yarn/node-sass-4.13.1
- dev-dependabot/npm_and_yarn/bootstrap-vue-2.0.0-rc.12
- dev-dependabot/npm_and_yarn/websocket-extensions-0.1.4
- dev-dependabot/npm_and_yarn/jquery-3.5.0
- dev-dependabot/npm_and_yarn/acorn-5.7.4
- dev-dependabot/composer/symfony/http-foundation-4.4.1
- dev-dependabot/npm_and_yarn/mixin-deep-1.3.2
- dev-spatie-translatable
- dev-datatables
This package is auto-updated.
Last update: 2024-09-10 09:03:43 UTC
README
这是一个基于 Bootstrap 4 的启动网站,具有轻量级博客功能、用户账户注册/管理以及基于 Laravel 5.7 的完整 Vue Tabler 后端。
演示
- 前端演示: https://laravel-boilerplate.okami101.io
- 后端演示: https://laravel-boilerplate.okami101.io/admincp (demo@example.com/demo, 只读)
功能
前端
- Bootstrap 4 前端,包含基本首页、关于、联系和法律声明页面
- 集成 Slick 滚动 和 Cookie 允许
- 博客部分,包括标签和作者导航
- 使用缓存插件动态优化图像的 Intervention 图像
- 集成 Turbolinks 以实现快速导航
- 通过 recaptcha 和 密码强度计 进行登录限制
- 前端用户空间和配置管理。包括电子邮件验证。可以通过环境参数禁用注册
- 包含所有受支持的社会化平台(Facebook/Twitter/LinkedIn/GitHub/Bitbucket)的 Laravel Socialite
后端
底层
- 基于 Bootstrap 4 的 Tabler 主题,包含许多实用插件(SweetAlert2、Flatpickr、CKEditor 5 等)
- 完全使用 Vue 组件编写,感谢 Bootstrap-Vue,无 jQuery 依赖
- Vue-route 实现即时客户端导航
- 原生的 Vue Datatable,带有全范围搜索输入和批量操作功能
- 所有主要 CRUD 操作都通过 Ajax 实现了
- 原生的 vue-select 组件,用于强大的选择系统(自动完成、标签等)
- 集成到 DataTables 中的 Excel 导出(感谢 Maatwebsite)和批量操作
- 即时搜索引擎(用于帖子)感谢 Laravel Scout 和 TNTSearch
包含的功能
- 用户和权限管理(经典用户 <-> 角色 <-> 权限结构)
- 模拟功能,用于快速测试用户上下文
- 前端表单模块,包括设置(收件人和可翻译消息确认)及提交管理
- 前端博客的帖子管理,具有细粒度的发布权限(经典草稿-待发布-已发布工作流)。帖子包括标题、摘要、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包。
composer create-project --prefer-dist --stability=dev adr1enbe4udou1n/laravel-boilerplate my-new-project
- 从.env.example设置数据库和环境变量。
- 如果需要,将Web写入权限设置为
bootstrap/cache
和storage
文件夹。 - 运行以下命令
对于本地/开发
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 编译资源
- 使用
yarn
安装依赖 - 运行
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
权限定义
与其他已知项目(如 ENTRUST 或 laravel-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 许可证。