mackstar / spout
基于 BEAR.Sunday 的 CMS
Requires
- aptoma/twig-markdown: 0.2.*
- bear/package: dev-develop
- danielstjules/stringy: 1.*
- imagine/imagine: v0.5.0
- michelf/php-markdown: ~1.3
- rhumsaa/uuid: 2.4
- robmorgan/phinx: *
- zendframework/zend-validator: *
Requires (Dev)
- bear/dev-package: dev-master
This package is not auto-updated.
Last update: 2024-09-25 12:27:41 UTC
README
Mackstar.Spout
使用 BEAR.Sunday 和 Angular.js 编写的以资源为中心的 CMS
为什么我们需要另一个 PHP CMS?Spout 有什么不同?
- 以资源为中心的 CMS。
- 页面、博客文章、菜单和块都可作为资源使用。
- 创建自己的自定义资源类型。
- 提供基于 Angular.JS 的单页管理应用程序。
- 管理应用程序仅仅是 RESTful API 的消费者,该 API 驱动您的应用程序。
- 通过使用 DI 和 AOP 以及添加自己的资源来覆盖核心 CMS。
- 现代 PHP 开发者友好的设置。
- 将内容嵌入到任何 PHP 应用程序(Laravel、Symfony、Zend Framework 等)中!
- 最大限度地提高与其他基于 composer 的 PHP 库的集成。
- 一切都是资源,您可以在任何 REST 客户端中操作任何内容。
贡献
我在寻找其他人一起在这个应用程序上工作。请发送您的 pull 请求!
其他工具
要求
- PHP 5.4+
- Apache - (将很快添加 NGINX 示例).
入门
安装
要安装 Spout,您需要检出 示例应用程序
git clone git@github.com:mackstar/Spout-Site.git {yourapp}
cd {yourapp}
composer install
上下文
可以实现各种上下文,例如生产环境和 api。您可以添加任何上下文,默认包含的上下文如下
- api
- dev
- test
- production
数据库配置
在 conf/contexts/{context}.php
中编辑数据库配置文件以匹配数据库上下文。上下文通常是 (dev|test|production)。默认基本配置文件已添加到 conf/defaults.php
####SQLite
<?php
$config = [
'driver' => 'pdo_sqlite',
'path' => __DIR__ . '/test_db.sqlite3', // sets DB location to root path
'charset' => 'UTF8'
];
return [
'master_db' => $config,
'slave_db' => $config
];
####MySql
我的 production.php
文件看起来像这样
// @Named($key) => instance
$config = [
// database
'master_db' => [
'driver' => 'pdo_mysql',
'host' => 'localhost',
'dbname' => 'spout',
'user' => $id,
'password' => $password,
'charset' => 'UTF8'
],
'slave_db' => [
'driver' => 'pdo_mysql',
'host' => 'localhost',
'dbname' => 'spout',
'user' => $slaveId,
'password' => $slavePassword,
'charset' => 'UTF8'
],
// constants
'app_name' => __NAMESPACE__,
'tmp_dir' => "{$appDir}/var/tmp",
'log_dir' => "{$appDir}/var/log",
'lib_dir' => "{$appDir}/var/lib",
'upload_dir' => "{$appDir}/var/www/uploads"
];
return $config;
安装命令
在您的站点内部运行 ./vendor/bin/spout install -e {CONTEXT}
PHP 内置 Web 服务器
php -S localhost:8080 -t var/www var/www/index.php
Apache
将您的 DocumentRoot
设置为 "{DOCUMENT_ROOT}/var/www"
应用程序
您可以将您的网站构建为多个 Spout 应用程序。您拥有的其他应用程序将通过 composer 安装。应用程序设置位于 conf/apps.php
示例应用程序已添加为 bobscars
并位于本地 src
目录中,作为 PSR-4 命名空间 Bob\BobsCars
。
例如,如果 Bob 的汽车依赖于另一个名为 Bob\BobsCarStock
的 Spout 应用程序,则配置将如下所示
return [
'site' => 'Bobs Cars',
'apps' => [
'bobscars' => ['namespace' => 'Bob\\BobsCars'],
'bobsstock' => ['namespace' => 'Bob\\BobsCarStock']
],
'default' => 'bobscars'
];
*** 注意:JS、CSS 和 www
webroot 不会共享。您需要自行安排这些内容的复制。***
资源、拦截器和路由都将对您可用。
路由
默认路由基于 Aura Router。示例路由已添加到 conf/routes.php
$routes->add('bobscars', [
['home', '/', 'index'],
['blog-index', '/blog/', 'blog/index', ['tokens' => ['slug' => '[^/]+']]],
['blog-detail', '/blog/{slug}', 'blog/detail', ['tokens' => ['slug' => '[^/]+']]],
['cardetail', '/cardetail/{id}', 'cars/detail'],
['car_resource', '/api/cardetail/{slug}', 'resources/detail', [
'tokens' => ['slug' => '[^/]+'],
'values' => ['type' => 'cars']
]
]
]);
创建管理员用户 - 只有在没有用户时才能执行
curl -XPOST 'https://:8080/api/users/index' -d '{
"email": "richard.mackstar@gmail.com",
"password": "secret",
"name": "Richard McIntyre",
"role": {
"id": "1",
"name": "Admin"
}
}';
管理员访问
您可以通过以下链接访问控制面板
http://{YOURDOMAIN}/spoutadmin
迁移
$ ./vendor/bin/spout migrate -e {CONTEXT}
回滚
$ ./vendor/bin/spout rollback -e {CONTEXT} -t 0