通过 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}
3 Comments