shabaz-ejaz/laracogs

使用各种命令、服务、门面和模板,快速准备您的Laravel应用程序。

dev-master 2018-05-03 11:15 UTC

This package is not auto-updated.

Last update: 2020-01-03 01:58:05 UTC


README

Laracogs - 用于快速Laravel开发的工具集

Build Status Scrutinizer Code Quality Packagist license

这是一套工具,旨在帮助加速Laravel应用程序的开发。您可以使用预先编写好的各种部分(用户、用户元数据、角色、团队)开始应用程序。它还提供了一个强大的表单生成器,可以从表格和对象中生成表单内容。它可以通过准备好的完整测试脚本来快速生成CRUD原型,几乎不需要编辑。它还提供了一个优雅的加密工具,对URL友好。最后,它还附带了一些LaravelCollective作为供应商的朋友。

作者

网站

http://laracogs.com

Yab Newsletter

订阅

聊天支持

Gitter

详细文档

请在此处查阅文档: http://laracogs.com/docs

一般要求

  1. PHP 5.6+
  2. 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许可授权。

错误报告和功能请求

请尽可能详细地添加有关提交问题和功能请求的详细信息

免责声明

本软件按“原样”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论责任是在合同行为、侵权行为或其他行为中产生的,与软件或软件的使用或其他与软件相关的行为有关。