yab / laracogs
Requires
- php: >=7.1.3
- doctrine/dbal: ^2.5
- grafite/crudmaker: ^1.4
- grafite/crypto: ~1.0
- grafite/formmaker: ^1.3
- illuminate/support: ^5.7
Requires (Dev)
- mikey179/vfsstream: ^1.6
- mockery/mockery: ~1.0
- orchestra/testbench: ^3.6
- phpunit/phpunit: ~7.0
- v2.5.1
- v2.5.0
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.13
- v2.2.12
- v2.2.11
- v2.2.10
- v2.2.9
- v2.2.8
- v2.2.7
- v2.2.6
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.11
- v2.1.10
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.1
- v2.0.0
- v1.9.38
- v1.9.37
- v1.9.36
- v1.9.35
- v1.9.34
- v1.9.33
- v1.9.32
- v1.9.31
- v1.9.30
- v1.9.29
- v1.9.28
- v1.9.27
- v1.9.26
- v1.9.25
- v1.9.24
- v1.9.23
- v1.9.22
- v1.9.21
- v1.9.20
- v1.9.19
- v1.9.18
- v1.9.17
- v1.9.16
- v1.9.15
- v1.9.14
- v1.9.13
- v1.9.12
- v1.9.11
- v1.9.10
- v1.9.9
- v1.9.8
- v1.9.7
- v1.9.6
- v1.9.5
- v1.9.4
- v1.9.3
- v1.9.2
- v1.9.1
- v1.9.0
- v1.8.1
- v1.8.0
- v1.7.5
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.1
- v1.4.0
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is not auto-updated.
Last update: 2022-02-01 12:54:49 UTC
README
Graphite 已存档此项目,不再支持或开发代码。我们建议将其仅作为您自己代码灵感的来源。
Builder - 用于快速 Laravel 开发的工具集
这是一套工具,可以帮助您加快 Laravel 应用的开发速度。您可以使用预先编写的各种部分(用户、用户元、角色、团队)开始一个应用。它还附带一个强大的 FormMaker,可以从表格和对象中生成表单内容。它可以快速生成史诗级的 CRUD 原型,并为您提供准备好的完整测试脚本,需要很少的编辑。它还提供了一个优雅的加密工具,非常适合 URL。最后,它还附带了一些 LaravelCollective 的朋友作为供应商。
作者
- Matt Lantz (@mattylantz, mattlantz at gmail dot com)
一般要求
- PHP 7.1.3+
- OpenSSL
兼容性和支持
Laravel 版本 | 包标签 | 支持 |
---|---|---|
5.7.x | 2.5.x | 否 |
5.6.x | 2.4.x | 否 |
5.5.x | 2.3.x | 否 |
5.4.x | 2.2.x | 否 |
5.3.x | 2.0.x - 2.1.x | 否 |
5.1.x - 5.2.x | 1.9.x | 否 |
安装
开始一个新的 Laravel 项目
laravel new {project_name}
或者
composer create-project laravel/laravel {project_name}
然后运行以下命令添加 Grafite Builder
composer require "grafite/builder"
是时候发布这些资产了!Grafite Builder 使用 CrudMaker 和 FormMaker,它们具有可发布的资产。
php artisan vendor:publish
或者
php artisan vendor:publish --provider="Yab\CrudMaker\CrudMakerProvider" php artisan vendor:publish --provider="Yab\FormMaker\FormMakerProvider"
现在您已安装 Grafite Builder。尝试使用 入门套件。
应用入门套件
!!! 警告 "确保您已遵循入门说明!"
Grafite Builder 提供了一种优雅的解决方案,通过构建应用最基本的前端、控制器、模型和迁移来开始应用。现在您可以使用此单条命令轻松开始整个应用,无需使用 php artisan make:auth
。
php artisan grafite:starter
!!! 小贴士 "但在我们这样做之前,让我们先做一些设置。"
为了使用入门套件,您需要修改一些文件。请查看以下修改
将以下内容添加到 app/Http/Kernel.php
中的 $routeMiddleware
数组。
'admin' => \App\Http\Middleware\Admin::class, 'permissions' => \App\Http\Middleware\Permissions::class, 'roles' => \App\Http\Middleware\Roles::class, 'active' => \App\Http\Middleware\Active::class,
如果您不担心电子邮件激活,请从路由的中间件数组中删除此内容
'active'
将 'config/auth.php' 和 'database/factories/UserFactory.php' 中的 App\User::class
更改为以下内容
App\Models\User::class
将以下内容添加到 'app/Providers/AuthServiceProvider.php' 的 boot 方法中
Gate::define('admin', function ($user) { return ($user->roles->first()->name === 'admin'); }); Gate::define('team-member', function ($user, $team) { return ($user->teams->find($team->id)); });
将以下内容添加到 'app/Providers/EventServiceProvider.php' 的 $listen 属性中
'App\Events\UserRegisteredEmail' => [ 'App\Listeners\UserRegisteredEmailListener', ],
您需要在 'config/database.php' 中创建一个 sqlite 内存测试数据库
'testing' => [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', ],
将以下行添加到 'phpunit.xml' 文件中
<env name="DB_CONNECTION" value="testing"/> <env name="MAIL_DRIVER" value="log"/>
关于电子邮件激活
入门套件新增了电子邮件激活组件到应用中,以确保您的用户已验证了他们的电子邮件地址。您可以通过从 web
路由中移除 active
中间件来禁用它。您还必须禁用通知,但移除电子邮件激活不会引起任何问题。
对于 Laravel 5.2 及以后版本
您还需要设置密码提醒的电子邮件位置。(在 config/auth.php - 底部)
'passwords' => [ 'users' => [ 'provider' => 'users', 'email' => 'emails.password', 'table' => 'password_resets', 'expire' => 60, ], ],
注意事项
您可能希望通过测试注册来快速开始,但请确保您的应用已配置电子邮件,否则将会抛出异常。您可以在 .env
文件中轻松设置它为 'log' 以临时设置
MAIL_DRIVER=log
最后步骤
一旦添加了所有这些部分,您将想要运行入门命令!
php artisan grafite:starter
然后您必须刷新需要包含在项目中的所有类的列表。
composer dump-autoload
然后您需要迁移以添加用户、用户元数据、角色和团队表。种子运行用于设置应用程序的初始角色。
php artisan migrate --seed
一旦入门套件运行起来,您就可以注册并登录到您的应用。然后您可以访问应用的设置部分,将您的角色设置为管理员以完全控制应用。
入门套件发布的内容
控制器
Grafite Builder 更新了基本控制器,以处理创建个人资料、设置默认返回路由到 dashboard
等。它还提供了处理个人资料修改、页面、团队管理等的控制器。管理员控制器处理用户的行政管理,如果用户具有管理员角色,则可以修改用户。
- app/Http/Controllers/
- Admin/
- DashboardController.php
- UserController.php
- RoleController.php
- Auth/
- ActivateController.php
- ForgotPasswordController.php
- LoginController.php
- RegisterController.php
- ResetPasswordController.php
- User/
- PasswordController.php
- SettingsController.php
- PagesController.php
- TeamController.php
- Admin/
中间件
Grafite Builder 由于重定向更改而覆盖了默认中间件。它还提供了用于路由级别保护的 Admin
中间件。
- app/Http/Middleware/
- Active.php
- Admin.php
- Permissions.php
- RedirectIfAuthenticated.php
- Roles.php
请求
提供了处理团队创建和所有组件更新的请求。这里我们整合了运行验证并返回错误的规则。(如果您使用 Grafite Builder FormMaker Facade,它甚至可以处理接受错误并突出显示适当的字段。)
- app/Http/Requests/
- PasswordUpdateRequest.php
- RoleCreateRequest.php
- TeamCreateRequest.php
- TeamUpdateRequest.php
- UserInviteRequest.php
- UserUpdateRequest.php
路由
由于添加了处理团队、个人资料、密码等的许多路由,所有路由都由入门套件覆盖。
- routes/web.php
配置
发布了权限配置文件,这是一种设置 Roles
可以拥有的访问级别和权限类型的方式。
- config/permissions.php
事件
各种动作的事件。
- app/Events/
- UserRegisteredEmail.php
监听器
各种动作的事件监听器。
- app/Listeners/
- UserRegisteredEmailListener.php
模型
模型很明显,但当我们集成以下服务时,这些服务处理所有业务逻辑等,并调用模型,我们实现SOLID实践,控制器、控制台或其他服务,只通过它调用服务。一旦这些被集成,请确保您删除了User.php
模型文件,并确保您已遵循安装和配置说明。
- app/Models/
- UserMeta.php
- User.php
- Team.php
- Role.php
通知
这是我们应用中需要发送给用户的全部电子邮件。它们非常出色,因为它们利用了Laravel通知组件的力量。
- app/Notficiations/
- ActivateUserEmail.php
- NewAccountEmail.php
- ResetPasswordEmail.php
服务
服务结构允许我们将业务逻辑放在模型和控制器之外。这种方法最适合希望未来集成API或其他事物的应用。它还允许应用程序具有高度可测试的结构。
- app/Services/
- Traits/
- HasRoles.php
- HasTeams.php
- ActivateService.php
- RoleService.php
- TeamService.php
- UserService.php
- Traits/
数据库
请确保安装后运行所有迁移和种子。这些种子设置了应用程序中可用的默认角色。
- database/factories/
- RoleFactory.php
- TeamFactory.php
- UserFactory.php
- UserMetaFactory.php
- database/migrations/
- 2015_11_30_191713_create_user_meta_table.php
- 2015_11_30_215038_create_roles_table.php
- 2015_11_30_215040_create_role_user_table.php
- 2015_12_04_155900_create_teams_table.php
- 2015_12_04_155900_create_teams_users_table.php
- database/seeds/
- DatabaseSeeder.php
- RolesTableSeeder.php
- UserTableSeeder.php
视图
视图尽可能少地包含HTML以执行逻辑操作。这些被设计为最基础的,并且所有这些都可以被修改。
- resources/views/
- admin/
- roles/
- edit.blade.php
- index.blade.php
- invite.blade.php
- users/
- edit.blade.php
- index.blade.php
- invite.blade.php
- dashboard.blade.php
- roles/
- auth/
- activate/
- email.blade.php
- token.blade.php
- passwords/
- email.blade.php
- reset.blade.php
- login.blade.php
- register.blade.php
- activate/
- errors/
- 401.blade.php
- 404.blade.php
- 503.blade.php
- partials/
- errors.blade.php
- message.blade.php
- status.blade.php
- team/
- create.blade.php
- edit.blade.php
- index.blade.php
- show.blade.php
- user/
- meta.blade.php
- password.blade.php
- settings.blade.php
- dashboard.blade.php
- admin/
测试
Grafite Builder入门套件为它的每个部分提供基本的单元测试。这为快速构建应用程序的测试提供了很好的示例。
- tests/
- Feature/
- TeamIntegrationTest.php
- Unit/
- UserServiceTest.php
- TeamServiceTest.php
- RoleServiceTest.php
- Feature/
设置后
仪表板访问
通过浏览到 /dashboard 端点来找到应用程序仪表板。默认管理员用户登录凭证是
- 邮箱:admin@example.com
- 密码:admin
用户
用户模型通过 Grafite Builder Starter Kit 进行扩展。它增加了基本用户模型:角色、团队和用户元数据。关系如下
- 元数据:hasOne
- 角色:belongsToMany
- 团队:belongsToMany
它还提供了以下方法
meta() // The relationship method
roles() // The relationship method
hasRole(role_name) // checks if user has role
teams() // The relationship method
isTeamMember(team_id) // checks if user is member
isTeamAdmin(team_id) // checks if user is admin level member
中间件
管理
Admin 中间件充当在路由或控制器级别设置管理员权限的工具。
['middleware' => 'admin']
此简单添加到路由将确保用户有权访问管理员级别,如果没有,则将其返回到他们来的地方。
激活
Active 中间件检查账户是否已通过通过电子邮件发送的令牌访问激活 URL 而被激活。
['middleware' => 'active']
此简单添加到路由将确保用户拥有已激活的账户,如果没有,则将其重定向到 /active 页面,以便他们可以在必要时请求另一个激活令牌。
角色
Roles 中间件允许您为您的路由设置自定义角色。
['middleware' => 'roles:admin|member']
权限
Permissions 中间件允许您为您的路由设置自定义权限(角色的子集)
['middleware' => 'permissions:admin|somethingDescriptive']
您可以在 config/permissions.php
中设置权限
Bootstrap UI
!!! 提示 "Bootstrap 版本 4"
如果您想选择应用程序入门套件。您还有许多用于视图的启动选项。您可以通过快速构建应用程序并立即开始运行!
php artisan grafite:bootstrap
!!! 提示 "这将确保您的 webpack 文件已准备好运行"
Bootstrap 发布的内容
该命令将用 bootstrap 版本的文件覆盖任何现有文件
- resources/views/
- user/
- meta.blade.php
- password.blade.php
- settings.blade.php
- admin/
- users/
- edit.blade.php
- index.blade.php
- invite.blade.php
- users/
- auth/
- login.blade.php
- password.blade.php
- register.blade.php
- reset.blade.php
- dashboard/
- main.blade.php
- panel.blade.php
- emails/
- new-user.blade.php
- password.blade.php
- errors/
- 404.blade.php
- 503.blade.php
- partials/
- errors.blade.php
- message.blade.php
- team/
- create.blade.php
- edit.blade.php
- index.blade.php
- show.blade.php
- user/
应用程序活动
有时了解用户在浏览您的网站或应用程序时的活动很有用。活动套件为您提供跟踪用户及其所有操作所需的一切。中间件为您做了大部分工作,但也欢迎您根据需求进行自定义。
设置
php artisan grafite:activity
将以下内容添加到您的 config/app.php
App\Providers\ActivityServiceProvider::class,
外观
提供以下工具以实现应用程序功能
Activity::log($description); Activity::getByUser($userId);
助手
activity($description) // will log the activity
应用程序功能
有时我们需要简单的方式来打开或关闭应用程序的部分,或者,客户可能想要这样做。无论如何,使用功能管理套件可以处理所有这些。现在您或您的客户可以打开或关闭注册或应用程序中的任何其他功能。只需利用 blade 或助手组件来完全控制您的应用程序。
设置
php artisan grafite:features
您可能希望将此行添加到您的导航中
<li class="nav-item"><a class="nav-link" href="{!! url('admin/features') !!}"><span class="fa fa-cog"></span> Features</a></li>
将以下内容添加到您的 config/app.php
App\Providers\FeatureServiceProvider::class,
将此代码添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数
require base_path('routes/features.php');
门面
提供以下工具以实现应用程序功能
Features::isActive($key);
Blade
@feature($key) // code goes here @endfeature
辅助函数
feature($key) // will return true|false
发布的功能
该命令将覆盖任何现有文件的功能版本
- app/Facades/Features.php
- app/Http/Controllers/Admin/FeatureController.php
- app/Http/Requests/FeatureCreateRequest.php
- app/Http/Requests/FeatureUpdateRequest.php
- app/Models/Feature.php
- app/Providers/FeatureServiceProvider.php
- app/Services/FeatureService.php
- database/migrations/2016_04_14_210036_create_features_table.php
- resources/views/admin/features/create.blade.php
- resources/views/admin/features/edit.blade.php
- resources/views/admin/features/index.blade.php
- routes/features.php
- tests/Feature/FeatureIntegrationTest.php
- tests/Unit/FeatureServiceTest.php
应用日志
日志工具简单地将应用日志视图添加到您的管理面板。这可以在开发过程中或在使用过程中检查应用时提供帮助。
设置
php artisan grafite:logs
您可能希望将此行添加到您的导航中
<li class="nav-item"><a href="{!! url('admin/logs') !!}"><span class="fa fa-line-chart"></span> Logs</a></li>
将此代码添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数
require base_path('routes/logs.php');
应用通知
Grafite Builder 的通知将为您和管理员构建基本的控制器、服务和视图,这样您就可以轻松地批量或特定地通知您的用户。
设置
php artisan grafite:notifications
您可能希望将此行添加到您的导航中
<li><a href="{!! url('user/notifications') !!}"><span class="fa fa-envelope-o"></span> Notifications</a></li> <li><a href="{!! url('admin/notifications') !!}"><span class="fa fa-envelope-o"></span> Notifications</a></li>
将此代码添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数
require base_path('routes/notification.php');
门面
提供以下工具用于应用通知
Notifications::notify($userId, $flag, $title, $details);
标志可以是任何 Bootstrap 警报:默认、信息、成功、警告、危险
发布的通知
该命令将覆盖任何现有文件的通知版本
- app/Facades/Notifications.php
- app/Http/Controllers/Admin/NotificationController.php
- app/Http/Controllers/User/NotificationController.php
- app/Http/Requests/NotificationRequest.php
- app/Models/Notification.php
- app/Services/NotificationService.php
- database/migrations/2016_04_14_180036_create_notifications_table.php
- resources/views/admin/notifications/create.blade.php
- resources/views/admin/notifications/edit.blade.php
- resources/views/admin/notifications/index.blade.php
- resources/views/notifications/index.blade.php
- resources/views/notifications/show.blade.php
- routes/notification.php
- tests/NotificationIntegrationTest.php
- tests/NotificationServiceTest.php
Forge 集成
FORGE 组件为您提供在管理面板中访问 FORGE API 的权限。无需为每次调整而登录 FORGE,现在您只需登录自己的应用程序,然后在管理面板中调整服务器配置中的计划程序或工作者。
要求
composer require themsaid/forge-sdk
设置
php artisan grafite:forge
您可能希望将此行添加到您的导航中
<li class="nav-item"><a href="{{ url('admin/forge/settings') }}"><span class="fa fa-fw fa-server"></span> Forge Settings</a></li> <li class="nav-item"><a href="{{ url('admin/forge/scheduler') }}"><span class="fa fa-fw fa-calendar"></span> Forge Calendar</a></li> <li class="nav-item"><a href="{{ url('admin/forge/workers') }}"><span class="fa fa-fw fa-cogs"></span> Forge Workers</a></li>
将此代码添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数
您将看到类似以下这样的行:->group(base_path('routes/web.php'));
您需要将其更改为类似以下内容
->group(function () { require base_path('routes/web.php'); require base_path('routes/forge.php'); }
将这些添加到 .env
FORGE_TOKEN= FORGE_SERVER_ID= FORGE_SITE_ID=
应用 API
如果您想选择使用Laracogs入门套件。您还可以轻松构建API层。运行grafite:api
命令将设置基本组件,但您现在也可以通过使用--api
选项将API工具作为CRUD的一部分来使用。
所需条件
composer require tymon/jwt-auth
设置
php artisan grafite:api
基本上,您需要为JWT完成所有基本设置,例如这里的一切:然后按照以下关于在https://github.com/tymondesigns/jwt-auth/wiki/Installation安装的说明进行操作。
将以下内容添加到app/Providers/RouteServiceProvider.php
文件中的mapWebRoutes(Router $router)
函数。
require base_path('routes/api.php');
在app/Http/Kernal.php
下添加到routeMiddleware。
'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class, 'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class,
将app/Http/Middleware/VerifyCsrfToken.php添加到except属性(您还必须为添加的CRUD执行此操作)。
'api/v1/login', 'api/v1/user/profile',
如果您使用Apache,请将以下内容添加到.htaccess
文件中。
RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
同时更新您的jwt配置文件并将用户设置为
\App\Models\User::class
API发布的内容
该命令将覆盖任何现有的文件以及它们的API版本。
- app/Http/Controllers/Api/AuthController.php
- app/Http/Controllers/Api/UserController.php
- routes/api.php
应用程序队列
如果您的redis实例已配置并且正在通过该实例运行队列,那么Horizon非常棒,但并非所有应用程序都需要这样做,也不必从那里开始。如果您有一个数据库驱动的队列并且正在寻找一个易于管理的组件来处理作业重试和取消,那么这将非常适合您的应用程序。
设置
php artisan grafite:queue
将此代码添加到 app/Providers/RouteServiceProvider.php
中的 mapWebRoutes(Router $router)
函数
require base_path('routes/queue.php');
您可能希望将此行添加到您的导航中
<li><a href="{!! url('admin/queue') !!}"><span class="fa fa-list"></span> Queue</a></li>
社交媒体登录
如果您想在您的应用程序中提供社交媒体登录并且想有一个简单的开始方法,那么无需再寻找。只需运行命令并按照以下步骤操作,您就可以直接获得GitHub登录。查看代码库后,集成Facebook等变得非常简单。
所需条件
composer require laravel/socialite
设置
php artisan grafite:socialite
下一步是为您的应用程序准备socialite。
将以下内容添加到您的app config下的providers。
Laravel\Socialite\SocialiteServiceProvider::class
将以下内容添加到您的app config下的aliases。
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
将require base_path('routes/socialite.php');
添加到app/Providers/RouteServiceProvider.php
中的mapWebRoutes(Router $router)
函数。
Route::middleware('web') ->namespace($this->namespace) ->group(function () { require base_path('routes/socialite.php'); require base_path('routes/web.php'); });
最后,在services配置中设置访问详情。
'github' => [ 'client_id' => 'id code', 'client_secret' => 'secret code', 'redirect' => 'http://your-domain/auth/github/callback', 'scopes' => ['user:email'], ],
socialite发布的内容
该命令将覆盖任何现有的文件以及它们的socialite版本。
- app/Http/Controllers/Auth/SocialiteAuthController.php
- routes/socialite.php
应用程序计费
如果您想选择使用Grafite Builder入门套件。您还可以通过Grafite Builder计费命令和Laravel/Cashier
快速处理您的应用程序的计费。Grafite Builder的计费将构建基本的控制器、视图等,这样您可以专注于使您的应用程序变得出色!
所需条件
composer require laravel/cashier
设置
php artisan grafite:billing
您需要修改 app/Providers/RouteServiceProvider.php
文件中的 mapWebRoutes(Router $router)
函数
您将看到类似以下这样的行:->group(base_path('routes/web.php'));
您需要将其更改为类似以下内容
->group(function () { require base_path('routes/web.php'); require base_path('routes/billing.php'); }
将这些添加到 .env
SUBSCRIPTION=app_basic STRIPE_SECRET=secret-key STRIPE_PUBLIC=public-key
将以下内容添加到 app/Providers/AuthServiceProvider.php 中
Gate::define('access-billing', function ($user) { return ($user->meta->subscribed('main') && is_null($user->meta->subscription('main')->endDate)); });
对于 config/services.php
,您希望它看起来像这样
'stripe' => [ 'model' => App\Models\UserMeta::class, 'key' => env('STRIPE_PUBLIC'), 'secret' => env('STRIPE_SECRET'), ],
最后运行 migrate 以添加订阅并将它们绑定到用户元数据
php artisan migrate
您还需要更新您的 webpack mix 文件以类似于以下内容(webpack.mix.js)
.js([ 'resources/assets/js/app.js', 'resources/assets/js/card.js', 'resources/assets/js/subscription.js' ], 'public/js');
设置后
您可能希望将此行添加到您的导航中
<li><a href="{{ url('user/billing/details') }}"><span class="fa fa-dollar"></span> Billing</a></li>
注意
您可能希望将视图 vendor.receipt 中的这一行更改为
<strong>To:</strong> {{ $user->user()->email }}
我们这样做是因为我们不是将计费绑定到用户,而是将其绑定到用户元数据。
计费发布的内容
此命令将覆盖任何现有文件,使用计费版本的文件
- app/Http/Controllers/User/BillingController.php
- app/Models/UserMeta.php
- config/invoice.php
- config/plans.php
- database/migrations/2016_02_26_000647_create_subscriptions_table.php
- database/migrations/2016_02_26_000658_add_billings_to_user_meta.php
- resources/assets/js/card.js
- resources/assets/js/subscription.js
- resources/views/billing/card-form.blade.php
- resources/views/billing/change-card.blade.php
- resources/views/billing/details.blade.php
- resources/views/billing/invoices.blade.php
- resources/views/billing/coupons.blade.php
- resources/views/billing/subscribe.blade.php
- resources/views/billing/tabs.blade.php
- routes/billing.php
账户
账户服务是处理您的订阅详情的工具,这意味着您可以使用计划配置根据各种条款限制您的应用程序。您可以根据计费周期内或一般情况设置这些计划详情来限制事物。
这些仅与 计费 相关。它们为根据用户订阅的计划处理应用程序中的限制提供了额外工具。除非您使用Laracogs提供的UserMeta结构实现收银员计费系统,否则它对您没有好处。
配置
这是 config/plans.php
的基本配置。这是针对单个计划,无论是已订阅还是未订阅。
!!!提示 "请记住您需要在Stripe上具有相应的计划,例如默认的app_basic"
'subscription' => env('SUBSCRIPTION'),
'subscription_name' => 'main',
'plans' => [
'app_basic' => [
'access' => [
'some name'
],
'limits' => [
'Model\Namespace' => 5,
'pivot_table' => 1
],
'credits' => [
'column' => 'credits_spent',
'limit' => 10
],
'custom' => [
'anything' => 'anything'
],
],
]
多个计划
在此配置中,您可以定义多个计划,每个计划可以有不同的规则。默认情况下,套件使用单个计划。您可以在上面提到的env中定义此内容。但是,如果您想实现多个计划,您可以更改以下代码
- 在
BillingController.php
的第45行,将config('plans.subscription')
改为:$payload['plan']
- 将
name
和stripe_id
添加到配置中
'subscription_name' => 'main',
'plans' => [
'basic' => [
'name' => 'Basic Subscription',
'stripe_id' => 'basic_subscription',
'access' => [
'some name'
],
'limits' => [
'Model\Namespace' => 5,
'pivot_table' => 1
],
'credits' => [
'column' => 'credits_spent',
'limit' => 10
],
'custom' => [
'anything' => 'anything'
],
],
]
- 然后在
resources/views/billing/subscribe.blade.php
中卡表单包含上方添加以下代码
<div class="form-group"> <label class="form-label" for="plan">Plan</label> <select class="form-control" name="plan" id="plan"> @foreach (config('plans.plans') as $plan) <option value="{{ $plan['stripe_id'] }}">{{ $plan['name'] }}</option> @endforeach </select> </div>
!!!提示 "您还可能想添加一个组件到您的应用程序,以便用户可以切换计划。您可以使用swap方法实现此目的: auth()->user()->meta->subscription(config('plans.subscription_name'))->swap($request->plan)
"
服务方法
#### currentBillingCycle() 通过在开始时使用此方法并在其后链接另一个方法,您可以将查询的限制限制为当前计费周期。
#### canAccess($area) 如果用户可以进入,则返回布尔值
#### cannotAccess($area) 如果用户不能进入,则返回布尔值
#### getClause($key) 返回计划的指定条款
#### getLimit($model) 返回指定模型或交叉表的指定限制
#### withinLimit($model, $key = 'user_id', $value = {用户ID}) 确认指定的模型仅通过 $key 和 $value 收集了指定数量的数据。* 如果在之前添加 `currentBillingCycle()`,则将增加进一步的限制。
#### creditsUsed($model, $key = 'user_id', $value = {用户ID}) 报告通过 $key 和 $value 收集的指定数据量。* 如果在之前添加 `currentBillingCycle()`,则将增加进一步的限制。
#### creditsAvailable($model) 基于配置和前一种方法返回剩余的积分数量。* 如果在之前添加 `currentBillingCycle()`,则将增加进一步的限制。
#### clause($key, $method, $model = null) 执行由配置中 clause 名称定义的自定义方法。此闭包方法提供以下参数:$user, $subscription, $clause, $query
许可证
Grafite Builder 是开源软件,许可证为 MIT 许可证
错误报告和功能请求
请尽可能详细地提供有关提交问题和功能请求的详细信息
免责声明
本软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是由于合同行为、侵权或其他方式引起的,不论是否源于、源于或与软件或其使用或其它交易有关。