承接 ikoncept/fabriq 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ikoncept/fabriq

最新稳定版本:2.17.0

Composer 安装命令:

composer require ikoncept/fabriq

包简介

A CMS Framework by Ikoncept

README 文档

README

Latest Stable Version tests PHPStanLevel7 PHP Version Require

Fabriq CMS logo

Fabriq CMS

Installation instructions 💻

Add the customer repository url for the make-user-command in your composer.json file:

...
    "repositories": {
        "0": {
            "type": "vcs",
            "url": "https://github.com/KarabinSE/laravel-make-user"
        }
    },

Install Fabriq:

composer require ikoncept/fabriq "^2.0" -W

If you're planning on using AWS s3:

# Laravel > 9
composer require --with-all-dependencies league/flysystem-aws-s3-v3 "^1.0"

# Laravel 9+
composer require league/flysystem-aws-s3-v3 "^3.0"

Install the Mailgun driver

composer require symfony/mailgun-mailer symfony/http-client

Install Laravel Sanctum as well for authentication

composer require laravel/sanctum

Add the domain to the .env file:

SANCTUM_STATEFUL_DOMAINS=your-domain.test
SESSION_DOMAIN=your-domain.test

Publish the configurations:

php artisan vendor:publish --provider="Ikoncept\Fabriq\FabriqCoreServiceProvider" --tag=config
php artisan vendor:publish --provider="Karabin\TranslatableRevisions\TranslatableRevisionsServiceProvider" --tag=config

Setup your database using the .env

Modify the user model 🧘

The user model need to extend the Fabriq\Models\User::class

// app/Models/User.php

//...
use Ikoncept\Fabriq\Models\User as FabriqUser;
//...

class User extends FabriqUser

// ...

Run the fabriq:install command:

php artisan fabriq:install

This command will publish front end assets and views. It will also run the migrations

Important Delete the files app.js and bootstrap.js in the resources/js directory

rm resources/js/app.js && rm resources/js/bootstrap.js

Run pnpm install and pnpm production to build assets

pnpm install && pnpm production

Auth configuration 🗝

Laravel v11 and above

Note

On Laravel 11 and up the step below is not necessary since the files are overwritten when installing

Laravel below v11

Enable the Laravel Sanctum middleware in app\Http\Kernel.php

    // app\Http\Kernel.php

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, // <---
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

Register routes 🛣

Note

On Laravel 11 and up the this is not necessary since the files are overwritten when installing

Register the routes that makes sense for your app. See below examples

// routes/api.php
use Ikoncept\Fabriq\Fabriq;

Fabriq::routes(function ($router) {
    $router->forDevProtected();
}, [
    'middleware' => ['auth:sanctum', 'role:dev', 'verified'],
    'prefix' => 'dev'
]);

Fabriq::routes(function ($router) {
    $router->forApiAdminProtected();
}, [
    'middleware' => ['auth:sanctum', 'role:admin', 'verified'],
    'prefix' => 'admin'
]);

Fabriq::routes(function ($router) {
    $router->forApiProtected();
}, [
    'middleware' => ['auth:sanctum']
]);

Fabriq::routes(function ($router) {
    $router->forPublicApi();
});
// routes/web.php

use Ikoncept\Fabriq\Fabriq;

Fabriq::routes(
    function ($router) {
        $router->allWeb();
    }
);

Create your first user in the database, or by using a package like michaeldyrynda/laravel-make-user

Publishing assets 🗄️

Assets can be published using their respective tags. The tags that are available are:

  • config - The config file
  • fabriq-translations - Translations for auth views and validation messages
  • fabriq-frontend-assets - Front end build system and Vue project files
  • fabriq-views - Blade views and layouts

You can publish these assets using the command below:

php artisan vendor:publish --provider="Ikoncept\Fabriq\FabriqCoreServiceProvider" --tag=the-tag

If you want to overwrite your old published assets with new ones (for example when the package has updated views) you can use the --force flag

php artisan vendor:publish --provider="Ikoncept\Fabriq\FabriqCoreServiceProvider" --tag=fabriq-views --force

Note Above tags have been published when the fabriq:install was run

Broadcasting 📢

Fabriq leverages laravel/echo as a front end dependency to communicate with a pusher server. This package is preconfigured to use Ikoncept's own websocket server, but a pusher implementation can be swapped in.

To enable semi automatic prescense broadcasting go to the /resources/js/plugins/index.js and un-comment the the line for Laravel Echo:

// import '~/plugins/laravel-echo'
import '~/plugins/toast'
import '~/plugins/v-calendar'
import '~/plugins/v-mask'
// ...

If the Laravel Echo plugin isn't imported it will not be enabled.

Don't forget to add the proper .env variables:

BROADCAST_DRIVER=ikoncept_pusher
PUSHER_APP_ID=400
PUSHER_APP_KEY=your-key
PUSHER_APP_SECRET=your-secret
PUSHER_APP_CLUSTER=mt1

If you want to have a presence channel for a specific page, simply add it to the route:

    {
        path: '/articles/:id/edit',
        name: 'articles.edit',
        component: ArticlesEdit,
        meta: {
            middleware: [RolesMiddleware, PresenceMiddleware], // <- Added here (PresenceMiddleware)
            roles: ['admin'],
        }
    },

If you want to have a broadcast channel for a specific page, simply add it to the route:

    {
        path: '/articles/:id/edit',
        name: 'articles.edit',
        component: ArticlesEdit,
        meta: {
            middleware: [RolesMiddleware, BroadcastMiddleware], // <- Added here (PresenceMiddleware)
            roles: ['admin'],
            broadcastName: 'article'
        }
    },

When the broadcast middleware is applied it will listen to updated, created and deleted events. Which is useful for index views when live updates are needed.

Updating ♻️

You can publish new front end assets with the php artisan fabriq:update command. This command will publish new front end assets and run migrations.

Done? 🎉

That should be it, serve the app and login at /login

License

The MIT License (MIT). Please see License File for more information.

Testing

composer test

ikoncept/fabriq 适用场景与选型建议

ikoncept/fabriq 是一款 基于 Vue 开发的 Composer 扩展包,目前已累计 1.3k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2021 年 09 月 22 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 ikoncept/fabriq 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ikoncept/fabriq 我们能提供哪些服务?
定制开发 / 二次开发

基于 ikoncept/fabriq 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.3k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: Vue

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-09-22