shabaz-ejaz / laracogs
使用各种命令、服务、门面和模板,快速准备您的Laravel应用程序。
Requires
- php: >=7.0
- doctrine/dbal: ^2.5
- illuminate/support: ^5.5
- yab/cerebrum: ~1.0
- yab/crudmaker: ^1.3
- yab/crypto: ~1.0
- yab/formmaker: ^1.2
Requires (Dev)
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^0.9.4
- orchestra/testbench: ^3.4
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2020-01-03 01:58:05 UTC
README
Laracogs - 用于快速Laravel开发的工具集
这是一套工具,旨在帮助加速Laravel应用程序的开发。您可以使用预先编写好的各种部分(用户、用户元数据、角色、团队)开始应用程序。它还提供了一个强大的表单生成器,可以从表格和对象中生成表单内容。它可以通过准备好的完整测试脚本来快速生成CRUD原型,几乎不需要编辑。它还提供了一个优雅的加密工具,对URL友好。最后,它还附带了一些LaravelCollective作为供应商的朋友。
作者
- Matt Lantz (@mattylantz, matt at yabhq dot com)
- Chris Blackwell (@chrisblackwell, chris at yabhq dot com)
网站
Yab Newsletter
聊天支持
详细文档
请在此处查阅文档: http://laracogs.com/docs
一般要求
- PHP 5.6+
- OpenSSL
兼容性和支持
Laravel版本 | 包标签 | 支持 |
---|---|---|
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项目
composer create-project laravel/laravel your-project-name
然后运行以下命令以添加Laracogs
composer require "yab/laracogs"
将此添加到 config/app.php
中的提供者数组
Yab\Laracogs\LaracogsProvider::class,
完成这些步骤后,您将拥有以下工具
CrudMaker
CrudMaker命令为表构建CRUD和单元测试!对于已存在的表,使用table-crud。
php artisan crudmaker:new {name or snake_names} {--api} {--ui=bootstrap|semantic} {--serviceOnly} {--withFacade} {--migration} {--schema=} {--relationships=} php artisan crudmaker:table {name or snake_names} {--api} {--ui=bootstrap|semantic} {--serviceOnly} {--withFacade}
文档
文档可以为业务规则准备文档,或者使用Sami为应用程序准备API文档生成。
php artisan laracogs:docs {action} {name=null} {version=null}
门面/服务
Laracogs提供了一些易于使用的工具,除了应用程序启动器套件和CrudMaker之外,包括
加密
一些简单的加密工具,包括随机UUID生成器。
Crypto::uuid(); Crypto::encrypt('string'); Crypto::decrypt('enc-string'); Crypto::sharable()->encrypt('string'); Crypto::sharable()->decrypt('enc-string');
FormMaker
用一行代码即可构建表单。
FormMaker::fromTable($table, $columns = null, $class = 'form-control', $view = null, $reformatted = true, $populated = false, $idAndTimestamps = false) FormMaker::fromObject($object, $columns = null, $view = null, $class = 'form-control', $populated = true, $reformatted = false, $idAndTimestamps = false) FormMaker::fromArray($array, $columns = null, $view = null, $class = 'form-control', $populated = true, $reformatted = false, $idAndTimestamps = false)
InputMaker
想要创建一些输入?无需再找。
InputMaker::label($name, $attributes = []) InputMaker::create($name, $field, $object = null, $class = 'form-control', $reformatted = false, $populated = false)
Cerebrum
一组可以添加到服务或模型中以赋予您的应用额外功能的特性!
Memory // Magical caching Linguistics // Basic NLP
Laratest
想要为您的代码编写测试?使用这个便捷命令生成测试结构。
php artisan laratest:unit {path to file} php artisan laratest:route {route}
Kits
您还可以利用我们的样板代码生成器,这些工具将为您的应用准备入门套件、管理员、用户设置、通知、账单集成、API访问、社交媒体登录、Bootstrap样式等!
Kits 仅与 Laravel 的最新版本兼容!
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
。您还可能希望从 UserService
中删除电子邮件通知。
使用角色中间件,您可以指定哪些角色适用,用管道分隔:['middleware' => ['roles:admin|moderator|member']]
权限中间件允许您指定哪些权限(绑定到角色的权限)适用于路由,用管道分隔:['middleware' => ['permissions:admin|regular']]
将 'config/auth.php' 和 'database/factories/ModelFactory.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)); }); Gate::define('permission', function ($user, $permission) { return $user->hasPermission($permission); }); Gate::define('role', function ($user, $role) { return ($user->hasRole($role)); });
在 '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 laracogs:starter
然后您需要迁移以添加用户、用户元数据、角色和团队表。种子操作用于设置应用程序的初始角色。
composer dump php artisan migrate --seed
要登录,只需输入
admin@example.com
admin
一旦启动器套件运行,您就可以注册并登录到您的应用程序。然后您可以访问应用程序的设置部分,将您的角色设置为管理员以完全控制应用程序。现在轮到更多的模板生成器了!
Bootstrap
Bootstrap使用Bootstrap作为视图/ CSS框架来准备您的应用程序。
php artisan laracogs:bootstrap
Semantic
Semantic使用semantic-ui作为视图/ CSS框架来准备您的应用程序。
php artisan laracogs:semantic
功能
一个强大且非常实用的功能管理系统。
php artisan laracogs:feature
活动
跟踪用户活动并提供应用程序中的责任层的能力。
php artisan laracogs:activity
Socialite
Socialite使用GitHub作为示例来准备您的应用程序的社会系统。
php artisan laracogs:socialite
API
Api使用JWT(登录和用户配置文件)系统来准备您的应用程序。
php artisan laracogs:api
请注意,计费和通知仅针对与Bootstrap一起使用进行设置。
通知
通知使用通知系统来准备您的应用程序。
php artisan laracogs:notifications
计费
计费命令使用Laravel的cashier设置您的应用程序 - 它准备整个应用程序以处理具有策略结构的订阅。
php artisan laracogs:billing
需求
composer require laravel/cashier
您可能希望将此行添加到您的导航中
<li><a href="{!! url('user/billing/details') !!}"><span class="fa fa-dollar"></span> Billing</a></li>
将其添加到app/Providers/RouteServiceProvider.php
中的mapWebRoutes
方法。它看起来像:->group(base_path('routes/web.php'));
因此您需要将其更改为类似以下内容
->group(function () { require base_path('routes/web.php'); require base_path('routes/billing.php'); });
将其添加到.env文件中
SUBSCRIPTION=basic STRIPE_SECRET=public-key STRIPE_PUBLIC=secret-key
将其添加到app/Providers/AuthServiceProvider.php
中的boot
方法
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'), ],
最后运行迁移以添加订阅并将它们绑定到用户元数据
php artisan migrate
您还希望更新gulpfile.js以包括card.js和subscription.js
elixir(function(mix) { mix.scripts([ 'app.js', 'card.js', 'subscription.js' ]); });
账户(仅限计费)
计划
这是config/plans.php
的基本配置。它设置了默认订阅名称以及与它们相关的计划和规则。
'subscription_name' => 'main',
'plans' => [
'basic' => [
'access' => [
'some name'
],
'limits' => [
'Model\Namespace' => 5,
'pivot_table' => 1
],
'credits' => [
'column' => 'credits_spent',
'limit' => 10
],
'custom' => [
'anything' => 'anything'
],
],
]
服务
该服务为根据用户订阅的计划处理应用程序中的限制提供了额外的工具。
getClause('box_limit'); canAccess('area_51'); cannotAccess('restricted_area'); getLimit('team_user'); withinLimit('App\Models\Team'); creditsAvailable('App\Models\Team'); creditsUsed('App\Models\Team'); currentBillingCycle()->withinLimit('App\Models\Team'); clause('custom', function($user, $subscription, $clause, $query) { // do your own logic! // model is optional if you dont provide it the query is null - otherwise it's a query builder }, 'App\Models\Team');
许可
Laracogs是开源软件,根据MIT许可授权。
错误报告和功能请求
请尽可能详细地添加有关提交问题和功能请求的详细信息
免责声明
本软件按“原样”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论责任是在合同行为、侵权行为或其他行为中产生的,与软件或软件的使用或其他与软件相关的行为有关。