matih/yii2-one-domain-starter-kit

Yii2 单域启动器套件应用模板

安装: 50

依赖项: 0

建议者: 0

安全: 0

星标: 3

关注者: 3

分支: 648

类型:项目

2.2.1 2016-04-23 09:34 UTC

README

Packagist Packagist PayPal donate button Dependency Status Build Status

这是基于Yii2的单域启动应用模板,基于yii2-starter-kit

它被创建并不断发展,以便快速构建基于Yii2的高级网站。

它涵盖了新项目的典型用例,并可以帮助您避免在每个项目中重复相同的工作。

开始之前

请考虑通过贡献捐赠来帮助项目。

目录

##DEMO 演示由优秀的Digital Ocean托管

前端:http://yii2-starter-kit.terentev.net

后端:http://backend.yii2-starter-kit.terentev.net

管理员角色账户

Login: webmaster
Password: webmaster

经理角色账户

Login: manager
Password: manager

用户角色账户

Login: user
Password: user

特性

  • 美观且开源的AdminLTE 2仪表板主题,适用于后端 AdminLTE 2
  • 翻译:英语、西班牙语、俄语、乌克兰语、中文
  • 翻译编辑器
  • 语言更改动作 + 行为,根据浏览器首选语言选择区域设置
  • 登录、注册、个人资料(头像、区域设置、个人信息)、电子邮件激活等
  • OAuth授权
  • 用户管理
  • 预定义的访客用户经理管理员角色的RBAC
  • RBAC迁移支持
  • 内容管理组件:文章、分类、静态页面、可编辑菜单、可编辑轮播图、文本块
  • 键值存储组件
  • 应用程序设置表单(基于KeyStorage组件)
  • 现成的RESTful API模块
  • 文件存储组件 + 文件上传小部件
  • 按需创建缩略图 trntv/yii2-glide
  • 支持队列和异步任务的命令总线 trntv/yii2-command-bus
  • 有用的行为(GlobalAccessBehavior、CacheInvalidateBehavior、MaintenanceBehavior)
  • Yii2日志网络界面
  • 应用程序时间线组件
  • 缓存网络控制器
  • 维护模式组件(更多
  • 系统信息网络界面
  • dotenv支持
  • ExtendedMessageController,具有替换源代码语言和在不同消息源之间迁移消息的能力
  • Aceeditor小部件
  • 日期时间选择器小部件,
  • Imperavi Reactor小部件,
  • Elfinder扩展
  • Xhprof调试面板
  • 扩展IDE自动完成
  • Nginx配置示例
  • 测试就绪
  • 支持Docker和Vagrant
  • 内置mailcatcher
  • 资源压缩和连接
  • 一些有用的快捷键
  • 许多其他我懒得写的特性 :-)

应用组件

I18N

如果您想将应用程序消息存储在数据库中,并能够从后端编辑它们,请运行

php console/yii message/migrate @common/config/messages/php.php @common/config/messages/db.php

它将把所有现有的消息复制到数据库中

然后在

common/config/base.php

KeyStorage

中取消注释DbMessageSource的配置

Yii::$app->keyStorage->set('articles-per-page', 20);
Yii::$app->keyStorage->get('articles-per-page'); // 20

维护模式

启动套件内置了提供维护功能的组件。您只需要在配置中配置maintenance组件

'bootstrap' => ['maintenance'],
...
'components' => [
    ...
    'maintenance' => [
        'class' => 'common\components\maintenance\Maintenance',
        'enabled' => Astronomy::isAFullMoonToday()
    ]
    ...
]

此组件将捕获所有传入请求,设置正确的响应HTTP头(503,"Retry After")并显示维护信息。更多配置选项可以在相应的类中找到。

如果KeyStorage中的frontend.maintenance键设置为true,则启动套件会配置为开启维护模式

命令总线

在启动套件中,命令总线模式通过tactician包及其yii2连接器yii2-tactician实现。

命令存储在common/commands/command目录中,处理器在common/commands/handler目录中。

要执行命令,请运行

$sendEmailCommand = new SendEmailCommand(['to' => 'user@example.org', 'body' => 'Hello User!']);
Yii::$app->commandBus->handle($sendEmailCommand);

时间轴(活动)

$addToTimelineCommand = new AddToTimelineCommand([
    'category' => 'user', 
    'event' => 'signup', 
    'data' => ['foo' => 'bar']
]);
Yii::$app->commandBus->handle($addToTimelineCommand);

行为

CacheInvalidateBehavior

 public function behaviors()
 {
     return [
         [
             'class' => `common\behaviors\CacheInvalidateBehavior`,
             'tags' => [
                  'awesomeTag',
                   function($model){
                       return "tag-{$model->id}"
                  }
              ],
             'keys' => [
                  'awesomeKey',
                  function($model){
                      return "key-{$model->id}"
                  }
              ]
         ],
     ];
 }

GlobalAccessBehavior

将其添加到您的应用程序配置中

'as globalAccess'=>[
        'class'=>'\common\behaviors\GlobalAccessBehavior',
        'rules'=>[
            [
                'controllers'=>['sign-in'],
                'allow' => true,
                'roles' => ['?'],
                'actions'=>['login']
            ],
            [
                'controllers'=>['sign-in'],
                'allow' => true,
                'roles' => ['@'],
                'actions'=>['logout']
            ],
            [
                'controllers'=>['site'],
                'allow' => true,
                'roles' => ['?', '@'],
                'actions'=>['error']
            ],
            [
				'allow' => true,
				'roles' => ['@']
			]
        ]
    ]

它将仅允许认证用户访问您的应用程序。

命令总线

关于命令总线,请参阅官方存储库

可从后端配置的Widget

轮播图

  1. 在后端创建轮播图
  2. 使用它
<?php echo DbCarousel::widget(['key' => 'key-from-backend']) ?>

DbText

  1. 在后端创建文本块
  2. 使用它
<?php echo DbText::widget(['key' => 'key-from-backend']) ?>

DbMenu

  1. 在后端创建文本块
  2. 使用它
<?php echo DbMenu::widget(['key' => 'key-from-backend']) ?>

小部件

网格

EnumColumn

 [
      'class' => '\common\grid\EnumColumn',
      'attribute' => 'status',
      'enum' => User::getStatuses() // [0=>'Deleted', 1=>'Active']
 ]

API

启动套件配备了完全配置和随时可用的REST API模块。您可以在http://yii2-starter-kit.dev/api/v1访问它。对于一些端点,您应该使用以下方法之一对您的请求进行身份验证 - https://github.com/yiisoft/yii2/blob/master/docs/guide/rest-authentication.md#authentication

多模型

common\base\MultiModel - 用于在控制器中处理多个模型的类

$model = new MultiModel([
    'models' => [
        'user' => $userModel,
        'profile' => $userProfileModel
    ]
]);

if ($model->load(Yii::$app->request->post()) && $model->save()) {
    ...
}

在视图中

<?php echo $form->field($model->getModel('account'), 'username') ?>

<?php echo $form->field($model->getModel('profile'), 'middlename')->textInput(['maxlength' => 255]) ?>    

其他

  • common\behaviors\GlobalAccessBehavior - 允许您在应用程序配置中设置应用程序的访问规则

  • common\behaviors\LocaleBehavior - 从浏览器或帐户设置中查找用户区域设置并将其设置

  • common\behaviors\LoginTimestampBehavior - 记录用户登录时间

  • common\validators\JsonValidator - 验证值是否为有效的JSON

  • common\rbac\rule\OwnModelRule - 简单的RBAC规则,用于检查当前用户是否是模型所有者

Yii::$app->user->can('editOwnModel', ['model' => $model]);
  • common\filters\OwnModelAccessFilter - 操作过滤器,用于检查用户是否允许管理此模型
public function behaviors()
    {
        return [
            'modelAccess' => [
                'class' => OwnModelAccessFilter::className(),
                'only' => ['view', 'update', 'delete'],
                'modelClass' => Article::className()
            ],
        ];
    }

##如何贡献?您可以通过任何方式来贡献。任何帮助都受欢迎,但最重要的是我需要帮助文档(^_^)

##捐赠

##有任何问题?请发邮件至eugene@terentev.net

##阅读更多 https://github.com/yiisoft/yii2/blob/master/apps/advanced/README.md https://github.com/yiisoft/yii2/tree/master/docs

###注意:此模板主要针对开发者,而非最终用户。这是一个您可以开始应用的地方,而不是从头创建。祝您好运!