matih / yii2-one-domain-starter-kit
Yii2 单域启动器套件应用模板
Requires
- php: >=5.5.0
- ext-intl: *
- asofter/yii2-imperavi-redactor: dev-master@dev
- bower-asset/admin-lte: ^2.0
- bower-asset/flot: ^0.8
- bower-asset/font-awesome: ^4.0
- bower-asset/html5shiv: ^3.0
- bower-asset/jquery-slimscroll: ^1.3
- intervention/image: ^2.1
- mihaildev/yii2-elfinder: ^1.0
- symfony/process: ^3.0
- trntv/cheatsheet: ^0.1@dev
- trntv/probe: ^0.2
- trntv/yii2-aceeditor: ^2.0
- trntv/yii2-command-bus: ^2.0
- trntv/yii2-datetime-widget: ^1.0.0
- trntv/yii2-file-kit: ^1.0.0
- trntv/yii2-glide: ^1.0.0
- vlucas/phpdotenv: ^2.0
- yiisoft/yii2: ^2.0.6
- yiisoft/yii2-authclient: ^2.0.0
- yiisoft/yii2-bootstrap: ^2.0.0
- yiisoft/yii2-jui: ^2.0.0
- yiisoft/yii2-swiftmailer: ^2.0.0
Requires (Dev)
- codeception/codeception: ^2.0
- codeception/specify: ^0.4.3
- codeception/verify: ^0.3.0
- yiisoft/yii2-codeception: ^2.0.0
- yiisoft/yii2-debug: ^2.0.0
- yiisoft/yii2-faker: ^2.0.0
- yiisoft/yii2-gii: ^2.0.0
Suggests
- trntv/yii2-debug-xhprof: dev-master@dev
This package is not auto-updated.
Last update: 2024-09-14 19:25:38 UTC
README
这是基于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
轮播图
- 在后端创建轮播图
- 使用它
<?php echo DbCarousel::widget(['key' => 'key-from-backend']) ?>
DbText
- 在后端创建文本块
- 使用它
<?php echo DbText::widget(['key' => 'key-from-backend']) ?>
DbMenu
- 在后端创建文本块
- 使用它
<?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() ], ]; }
##如何贡献?您可以通过任何方式来贡献。任何帮助都受欢迎,但最重要的是我需要帮助文档(^_^)
##捐赠
- [Paypal] (https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X7UFA3F3ALPM8)
- [Bitcoin] (https://www.coinbase.com/checkouts/2f1c1cb31c395e5aaafa1ba70003552e)
- [WebMoney] (Z110052695454)
- 其他方式:eugene@terentev.net
##有任何问题?请发邮件至eugene@terentev.net
##阅读更多 https://github.com/yiisoft/yii2/blob/master/apps/advanced/README.md https://github.com/yiisoft/yii2/tree/master/docs
###注意:此模板主要针对开发者,而非最终用户。这是一个您可以开始应用的地方,而不是从头创建。祝您好运!