sganz/yii2-advanced-api-template

由 Sandy Ganz 改进的 Yii 2 高级应用模板,原始版本由 Nenad Zivkovic 创建

1.2.1 2016-02-22 22:01 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:00:05 UTC


README

Yii2-advanced-template 是基于由 Yii2 核心开发者创建的 yii2-app-advanced 构建的。也就是说,yii2-advanced-api-template 是基于 yii2-advanced-template。

对这个模板进行了几个升级,包括 Nenand 和 Sandy 的修改

  1. 支持离线 Webroot API 应用程序,可用于服务层或您想要称之为何物的任何内容。它没有视图配置。
  2. 此模板具有本指南下一节中列出的附加功能。
  3. 应用结构已更改,以适应“共享主机友好”。
  4. 添加了示例模块,并设置了 REST 以及类似 API 的简单 AJAX 调用的设置(通过模块和路由)

功能(大部分来自 Yii2-advanced-template)

  • 注册,带或不带账户激活
    • 您可以选择是否需要新用户使用电子邮件账户激活系统激活账户才能登录。(见:common/config/params.php)。
  • 使用电子邮件/密码或用户名/密码组合登录。
    • 您可以选择用户如何登录系统。他们可以登录用户名|密码组合或电子邮件|密码。(见:common/config/params.php)。
  • 当运行 yii migrate 命令时,Rbac 表会与其他迁移一起安装。
    • RbacController 的 init() 动作将在迁移创建的我们的 rbac 表中插入 5 个角色和 2 个权限。
    • 管理员可以轻松地将角色分配给用户(见:backend/user)。
    • 在此应用程序中提供了如何使用 rbac 的良好示例。见:BackendController。
  • 具有 editor+ 角色的用户可以创建文章。
  • 会话数据默认存储在数据库中。
  • 系统设置存储在 config/params.php 文件中(从 v2 开始更改)。
  • 默认支持主题。
  • 默认支持翻译。
  • 管理员和创建者可以管理用户(从 v2 开始更改)。
  • 密码强度验证和强度计。
  • 此模板包含默认高级模板的所有功能。
  • 代码有大量注释。
  • 添加了新的 API 支持,具有简单的版本。文件夹结构与后端类似,但删除了一些 UI 代码和相关目录

安装

假设您知道如何:安装和使用 Composer,以及安装您可能需要的其他包/驱动程序,以便在您的系统上运行一切。如果您对这一切都很陌生,您可以在 Windows 8 和基于 Ubuntu 的 Linux 操作系统上安装由 Yii2 开发者提供的默认 Yii2 应用程序模板的指南进行检查,这些指南发布在 www.freetuts.org 上。

  1. 创建您将要用于应用程序的数据库(您可以使用 phpMyAdmin 或您喜欢的任何其他工具)。

  2. 现在打开您的控制台,并 cd 到您的 Web 根目录,例如:cd /var/www/html/

  3. 运行 Composer 的 create-project 命令

    composer create-project sganz/yii2-advanced-api-template advanced

  4. 一旦模板下载,您需要在两个环境之一中初始化它:开发(dev)或生产(prod)。将您的当前工作目录更改到 protected 并执行 php init 命令。

    cd advanced/protected/

    php init

    输入 0 以进行开发,执行命令,输入 yes 确认,并再次执行。

  5. 现在您需要让应用程序使用您之前创建的数据库。打开 advanced/protected/common/config/main-local.php 配置文件,调整您的连接凭据。

  6. 返回控制台。现在是时候运行 yii 迁移命令,该命令将在我们的数据库中创建必要的表。当您在 protected 文件夹内时,执行 ./yii migrate command

    ./yii migrate 或如果您在 Windows 上 yii migrate

  7. 执行 rbac 控制器的 init 动作,将默认角色和权限填充到我们的 rbac 表中

    ./yii rbac/init 或如果您在 Windows 上 yii rbac/init

您已完成,您可以在浏览器中启动应用程序。

*提示:如果您的应用程序名称为,例如,advanced,要查看其前端部分,只需在本地主机中访问此 URL:localhost/advanced。要查看后端部分,这就足够了:localhost/advanced/backend

注意:第一个注册的用户将获得 'The Creator'(超级管理员)角色。这应该是您。这个角色拥有所有可能的超级权限 :)。第一个用户之后注册的其他用户将获得 'member' 角色。成员只是普通认证用户。

测试

如果您想运行测试,应创建一个额外的数据库,用于存储您的测试数据。通常,测试数据库将与生产数据库具有相同的结构。我假设您已全局安装了 Codeception,并且知道如何使用它。以下是如何轻松设置一切的方法

  1. 假设您已创建名为 advanced 的数据库。创建名为 advanced_tests 的测试数据库。

  2. 在您的 main-local.php 配置文件中更改您要使用的数据库为 advanced_tests

  3. 打开您的控制台并将 cd 到应用程序的 protected 文件夹。

  4. 再次运行迁移:./yii migrate 或如果您在 Windows 上 yii migrate

  5. 再次运行 rbac/init:./yii rbac/init 或如果您在 Windows 上 yii rbac/init

  6. 现在您可以告诉应用程序再次使用 advanced 数据库而不是 advanced_tests。再次调整您的 main-local.php 配置文件。

  7. 现在您已准备好告诉 Codeception 使用 advanced_tests 数据库。

    protected/tests/codeception/config/config.php 文件中,告诉您的 db 使用 advanced_tests 数据库。

  8. 在应用程序根目录中启动您的 php 服务器: php -S localhost:8080(如果您的应用程序名称为 advanced,则根目录为 advanced 文件夹)

  9. 要运行针对应用程序前端编写的测试,请 cdprotected/tests/codeception/frontend,运行 codecept build 然后运行测试。

  10. 对后端和通用测试采取类似的步骤。

目录结构

protected
    api
        assets/              contains api assets definition
        config/              contains api configurations
        helpers/             contains helper classes
        models/              contains api-specific model classes
        runtime/             contains files generated during runtime
    backend
        assets/              contains backend assets definition
        config/              contains backend configurations
        controllers/         contains Web controller classes
        helpers/             contains helper classes
        models/              contains backend-specific model classes
        runtime/             contains files generated during runtime
        views/               contains view files for the Web application
        widgets/             contains backend widgets
    common
        config/              contains shared configurations
        helpers/             contains helper classes
        mail/                contains view files for e-mails
        models/              contains model classes used in both backend and frontend
        rbac/                contains role based access control classes
        translations/		 contains translations
    console
        config/              contains console configurations
        controllers/         contains console controllers (commands)
        migrations/          contains database migrations
        helpers/             contains helper classes
        models/              contains console-specific model classes
        runtime/             contains files generated during runtime
    environments             contains environment-based overrides
    frontend
        assets/              contains frontend assets definition
        config/              contains frontend configurations
        controllers/         contains Web controller classes
        helpers/             contains helper classes
        models/              contains frontend-specific model classes
        runtime/             contains files generated during runtime
        views/               contains view files for the Web application
        widgets/             contains frontend widgets

api                      contains the entry script and Web resources for api services
assets                   contains application assets generated during runtime
backend                  contains the entry script and Web resources for backend side of application
themes                   contains frontend themes
uploads                  contains various files that can be used by both frontend and backend applications

注释

从 yii-advanced-template 的 v2.2.0 版本构建。为某些版本的控制器添加了一些 Rest API 和简单控制器的示例。原始版本来自 https://github.com/nenad-zivkovic/yii2-advanced-template,您可以在他的 github 页面找到 Nenad Zivkovic 的特定示例。

用于 'country' REST 调用的示例代码需要在您的 DB 中创建一个表才能工作。将此放在您当前连接到的任何 DB 中。

测试表 'countries' 的 SQL 语句为 -

CREATE TABLE `country` (
  `code` CHAR(2) NOT NULL PRIMARY KEY,
  `name` CHAR(52) NOT NULL,
  `population` INT(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `Country` VALUES ('AU','Australia',18886000);
INSERT INTO `Country` VALUES ('BR','Brazil',170115000);
INSERT INTO `Country` VALUES ('CA','Canada',1147000);
INSERT INTO `Country` VALUES ('CN','China',1277558000);
INSERT INTO `Country` VALUES ('DE','Germany',82164700);
INSERT INTO `Country` VALUES ('FR','France',59225700);
INSERT INTO `Country` VALUES ('GB','United Kingdom',59623400);
INSERT INTO `Country` VALUES ('IN','India',1013662000);
INSERT INTO `Country` VALUES ('RU','Russia',146934000);
INSERT INTO `Country` VALUES ('US','United States',278357000);

这来自对 yii2 和 restful 控制器的简单介绍,在 - http://budiirawan.com/setup-restful-api-yii2

许可

我的工作(Sandy Ganz)使用 WTFPL 许可,这并不适用于原始工作,原始工作应由 Nenad Zivkovic 和/或 YiiSoft 许可。

WTFPL Yii2