侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

从零开始学YII2框架(六)高级应用程序模板

框架(架构)  /  管理员 发布于 7年前   239

高级应用程序模板
这个模板用在大型的团队开发项目中,而且后台从前台独立分离出来以便于部署在多个服务器中。由于YIi2.0的一些新的特性,这个程序模板的功能要更深一点。提供了基本的数据库的支持,注册、密码找回等功能。

安装

可以通过Composer来安装
如果没有安装Composer,先安装

curl -s http://getcomposer.org/installer | php

然后用如下命令来获取

php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced /path/to/yii-application

也可以直接下载压缩文件:Yii 2 with advanced application template(beta)
https://github.com/yiisoft/yii2/ ... -app-2.0.0-beta.tgz

开始

安装完成后,需要对其进行初始化操作。

执行init,选择开发环境(dev)php /path/to/yii-application/init创建新的数据库,设置common/config/main-local.php里的components.db数据库信息使用控制台命令迁移数据库yii migrate设置web服务器的根目录前台/path/to/yii-application/frontend/web/对应的url为http://frontend/后台/path/to/yii-application/backend/web/对应的url为http://backend/

目录结构

在根目录下面有这几个子目录

backend――后台web程序
common――公共的文件
console――控制台程序
environments――环境配置
frontend――前台web程序
根目录下面还有包含一些文件

.gitignore ――git版本控制中忽略的文件和目录,如果你有一些你不想要的文件到你的源代码里面就把它添加到这个文件中。
composer.json――这个下面会描述
init――在Composer里面所描述初始化脚本
init.bat――和上面一样,不过是Windows下面的
LIENSE.md――这个就不说了
README.md――同上
requirements.php――Yii运行环境要求检测文件
yii――控制台程序引导文件
yii.bat――Windows下面的东东

系统定义的路径别名

@yii ――框架的目录。
@app――当前正在运行的应用程序的基本路径。
@common -公共文件目录。
@frontend――前端web应用程序目录。
@backend ――后端web应用程序目录。
@console -控制台目录。
@runtime――当前正在运行的web应用程序的运行时目录
@vendor ――基础框架目录。
@web ――当前正在运行的web应用程序的url
@webroot――当前正在运行的web应用程序的web根目录。

应用程序

这个模板包含三个应用程序,前台、后台和控制台。前台通常来说就是展现给终端用户的,也就是项目本身。后台就是管理员控制面板,包含有分析以及类似的功能等。控制台主要用来做一些定时任务和一些简单的服务器的管理,另外也可以用来部署应用程序、数据库的迁移、资源的管理等。

common 目录提供一些公共的文件,可用于多个应用程序,例如User模型。

前台和后台都是web应用程序,他们都包含一个web目录,也就是web的根目录,在部署服务器的时候就得要指向这个目录。
每个应用程序都有他们自己的命名空间以及对应的别名。同理,common也有自己的命名空间和对应的别名。

配置和开发环境

在平常的开发中,直接设置配置文件会有多个问题

每个团队成员都有自己的配置选项。如果提交这样的配置将影响其他团队成员。
产品数据库密码和API密钥不应该在代码仓库中。
在有多个服务器的情况下:开发、测试、生产,每一个服务器都应该有自己的配置。
每种情况下都定义所有配置选项很重复,并且还要花太多的时间去维持它。

为了解决这些问题,Yii引入了一个非常简单的环境的概念。每个环境由环境目录下的一组文件的集合来表示。init命令用于不同环境之间切换。它只是复制从环境目录中所有应用程序的根目录。

通常环境包含应用程序引导文件如index.php和以-local.php后缀的配置文件。这些已经添加到.gitignore中,所以不会再添加到源码仓库中。
为了避免重复的配置文件相互覆盖。例如,前台应用程序按照以下顺序来读取配置:

common/config/main.phpcommon/config/main-local.phpfrontend/config/main.phpfrontend/config/main-local.php

参数文件按以下顺序读取

common/config/params.phpcommon/config/params-local.phpfrontend/config/params.phpfrontend/config/params-local.php

后面读取的文件配置会覆盖前面的配置

整个的流程图形如下

配置 Composer

应用程序安装完成后就可以设置要目录下面的composer.json

{  "name": "yiisoft/yii2-app-advanced",  "description": "Yii 2 Advanced Application Template",  "keywords": ["yii", "framework", "advanced", "application template"],  "homepage": "http://www.yiiframework.com/",  "type": "project",  "license": "BSD-3-Clause",  "support": {    "issues": "https://github.com/yiisoft/yii2/issues?state=open",    "forum": "http://www.yiiframework.com/forum/",    "wiki": "http://www.yiiframework.com/wiki/",    "irc": "irc://irc.freenode.net/yii",    "source": "https://github.com/yiisoft/yii2"  },  "minimum-stability": "dev",  "require": {    "php": ">=5.4.0",    "yiisoft/yii2": "*",    "yiisoft/yii2-swiftmailer": "*",    "yiisoft/yii2-bootstrap": "*",    "yiisoft/yii2-debug": "*",    "yiisoft/yii2-gii": "*"  },  "scripts": {    "post-create-project-cmd": [      "yii\\composer\\Installer::setPermission"    ]  },  "extra": {    "writable": [      "backend/runtime",      "backend/web/assets",      "console/runtime",      "console/migrations",      "frontend/runtime",      "frontend/web/assets"    ]  }}

首先,修改一些基本信息。例如名称,描述,关键词,主页等等。
你还可以根据你的需要添加更多的应用程序。这些包都是来自packagist.org,可免费的浏览所有的代码。
修改完composer.json之后 就可以运行

php composer.phar update --prefer-dist

,等下载并安装完成后就可以开始使用了。自动加载的类将会自动处理。

创建从后端到前端的链接

  通常情况下需要从后端应用程序连接到前端应用程序。因为前端应用程序可能包含自己的URL管理规则,所以需要再添加一个不同名字的后台的URL管理规则。

return [  'components' => [    'urlManager' => [      // here is your normal backend url manager config    ],    'urlManagerFrontend' => [      // here is your frontend URL manager config    ],  ],];

之后,就可以像这样来使用前台的url

echo Yii::$app->urlManagerFrontend->createUrl(...);

原文链接:http://www.yiifans.com/forum.php?mod=viewthread&tid=25
 (出处: Yii2|Yii爱好者中文社区门户)

翻译来源:http://www.yiiframework.com/doc-2.0/guide-apps-advanced.html
(Yii Framework 2.0 API Decumentation)

您可能感兴趣的文章:

  • 从零开始学YII2框架(一)通过Composer安装Yii2框架
  • 从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
  • 从零开始学YII2框架(三)扩展插件yii2-gird
  • 从零开始学YII2框架(二)通过 Composer 安装扩展插件
  • 从零开始学YII2框架(四)扩展插件yii2-kartikgii
  • Yii2框架中一些折磨人的坑


  • 上一条:
    Yii中render和renderPartial的区别
    下一条:
    从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Filament v3.1版本发布(0个评论)
    • docker + gitea搭建一个git服务器流程步骤(0个评论)
    • websocket的三种架构方式使用优缺点浅析(0个评论)
    • ubuntu20.4系统中宿主机安装nginx服务,docker容器中安装php8.2实现运行laravel10框架网站(0个评论)
    • phpstudy_pro(小皮面板)中安装最新php8.2.9版本流程步骤(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-05
    • 2020-02
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-11
    • 2021-03
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-08
    • 2023-08
    • 2023-10
    • 2023-12
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客