mackstar/spout

基于 BEAR.Sunday 的 CMS

v0.1.0 2014-10-26 16:19 UTC

This package is not auto-updated.

Last update: 2024-09-25 12:27:41 UTC


README

Build Status

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 请求!

其他工具

  • phpunit.xml for phpunit
  • .travis.yml for Travis CI
  • Grunt
  • Angular.js
  • Karma
  • Jasmine
  • Twitter Bootstrap

要求

  • 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