通过 Quarx 扩展包在任意 Laravel 应用中快速实现 CMS 功能


1、简介

Quarx 具备 CMS 的所有功能,并且可以以扩展包的方式被添加到任意 Laravel 应用。其所拥有的功能包括:页面、菜单、链接、组件、博客、事件以及FAQ等。

Quarx 既是一个可用于自定义CMS的模块构建器,也是一个模块发布工具。因此如果你想要在以后的项目中复用某些模块,则可以无缝发布资源;如果你想要让Quarx模块变成一个PHP扩展包,则需要发布资源到 quarx/modules目录。

2、安装需求

  • PHP 5.6+
  • OpenSSL
  • Laravel 5.1 - 5.2(v1.4.*)
  • Laravel 5.3(v2.0.*)

3、安装

创建一个新的Laravel应用,然后在.env中配置好数据库连接信息。

运行如下命令安装这个扩展包:

composer require yab/quarx

注册服务提供者:

Yab\Quarx\QuarxProvider::class,

发布配置相关资源、主题、脚手架及配置文件:

php artisan vendor:publish --provider="Yab\Quarx\QuarxProvider"

4、设置

简单设置

如果你想要构建的是一个带有强大CMS功能的简单网站,而且登录到应用的只有CMS管理员,那么你可以通过运行设置命令对应用进行设置。Quarx会安装所需要的一切:运行迁移、登录认证等,数秒钟内你就可以开始操纵你的网站:

php artisan quarx:setup

复杂设置

如果你想要添加Quarx到一个已存在的拥有其他复杂功能的应用,则需要进行更加复杂的设置。

首先,在路由提供者中引入路由文件:

require base_path('routes/quarx.php');

然后在app.scss文件中添加以下这行,你可能想要基于自己选择的主题进行编辑:

@import "resources/themes/default/assets/sass/_theme.scss";

接下来运行迁移命令:

php artisan migrate

添加下面这两行到核心路由中间件:

'quarx' => \App\Http\Middleware\Quarx::class,
'quarx-api' => \App\Http\Middleware\QuarxApi::class,

为了让模块可以正确加载需要添加如下这行代码到composer文件:

"Quarx\\": "quarx/",

5、访问Quarx

后台默认路由是/quarx/dashboard,登录用户名/密码是admin@admin.com/admin

Quarx需要 Laracogs 才能运行(用于生成表单),但是Quarx并不要求你使用 Laracogs 版的权限。同时你还需要确保对Quarx的访问进行一定程度的控制,这可以由Quarx中间件通过相应gate和policy来完成。如果你选择使用Laracogs提供的权限系统,那么可使用admin来替代quarx来处理Quarx认证,否则的话就需要为Quarx访问设置自己的安全策略。要实现这个的话需要简单添加Quarx策略到 app/Providers/AuthServiceProvider.php文件,并确保所有你想使用的规则都在策略方法里。

我们建议这样定义策略:

Gate::define('quarx-api', function ($user) {
    return true;
});

Gate::define('quarx', function ($user) {
    return (bool) $user;
});

或者使用Laravcogs:

Gate::define('quarx', function ($user) {
    return ($user->roles->first()->name === 'admin');
});

6、API

Quarx为我们提供了多个API方法,如果合适的话,你也可以自己定义访问和自定义中间件的策略。

token

每个Quarx API都必须携带定义在配置文件中的Quarx apiToken,这可以通过添加如下请求参数来实现:

?token={your token}

所有被发布以及可公开访问的数据在API中默认都是有效的:

/quarx/api/blog
/quarx/api/blog/{id}
/quarx/api/events
/quarx/api/events/{id}
/quarx/api/faqs
/quarx/api/faqs/{id}
/quarx/api/files
/quarx/api/files/{id}
/quarx/api/images
/quarx/api/images/{id}
/quarx/api/pages
/quarx/api/pages/{id}
/quarx/api/widgets
/quarx/api/widgets/{id}

点赞 取消点赞 收藏 取消收藏

<< 上一篇: 使用 Laravel Moderation 扩展在 Laravel 应用中实现简单的内容审核系统

>> 下一篇: 使用 Jigsaw 扩展包基于 Laravel Blade 模板构建静态站点 —— 安装预览篇