Browse Month: 十二月 2016

yii2 从控制器到展示

新建 Controller

1> 手动添加

在yii项目 controllers 目录下添加 controller 文件。

app\controllers\NoteController.php

2> web gii 生成

http://yiint.local.com/index.php?r=gii

Controller Class 栏中填入控制器路径,如下:

点击 Preview,确认无误后点击 Generate,会显示生成结果。如果生成失败,应该是php-fpm 对 app\controllers 路径没有写权限,将 app\controllers 改为 777 权限后重试即可。最后进入新生成的控制器页面

app\controllers\WebgiiController.php

3> 终端 yii gii 生成

项目目录下,使用yii 命令生成控制器

新建 action

app\controllers\NoteController.php

Yii 使用 action 前缀区分普通方法和可被web 使用的操作。 action 前缀后面的名称为操作请求参数。

操作命名

Yii 中操作名总是以小写处理,如果一个操作 ID 由多个单词组成, 单词之间将由连字符连接,如:

新建 view

yiint/views/note/hello.php

视图内容应该保存在 views/控制器名/视图名.php 文件中。通过控制器的 render() 方法加载视图文件。

打开页面 http://yiint.local.com/index.php?r=note/hello&name=world

路径

http://yiint.local.com/index.php?r=note/hello&name=world

路由格式是 ?r=控制器名/操作名&参数名=参数值

应用接受请求的时候会检查参数, 使用控制其名确定哪个控制器应该被用来处理请求。 然后相应控制器将使用操作名去确定哪个操作方法将被用来做具体工作。

这个链接中,路由 note/hello 将被解析至 NoteController 控制器中的 actionHello()

参考

yii2 结构与生命周期

Yii 应用静态结构

  • 入口脚本 web/index.php :终端用户能直接访问的 PHP 脚本, 负责启动一个请求处理周期。
  • 应用:能全局范围内访问的对象, 管理协调组件来完成请求.
  • 应用组件:在应用中注册的对象, 提供不同的功能来完成请求。
  • 模块:包含完整 MVC 结构的独立包, 一个应用可以由多个模块组建。
  • 过滤器:控制器在处理请求之前或之后 需要触发执行的代码。
  • 小部件:可嵌入到视图中的对象, 可包含控制器逻辑,可被不同视图重复调用。

请求生命周期

  1. 用户向入口脚本 web/index.php 发起请求。
  2. 入口脚本加载应用配置 并创建一个应用实例去处理请求。
  3. 应用通过请求组件 解析请求的路由。
  4. 应用创建一个控制器实例去处理请求。
  5. 控制器创建一个操作实例并针对操作执行过滤器。
  6. 如果任何一个过滤器返回失败,则操作退出。
  7. 如果所有过滤器都通过,操作将被执行。
  8. 操作会加载一个数据模型,或许是来自数据库。
  9. 操作会渲染一个视图,把数据模型提供给它。
  10. 渲染结果返回给响应组件。
  11. 响应组件发送渲染结果给用户浏览器。

应用目录结构

yii2 环境搭建

1. Composer 安装 Yii2

安装 Composer asset 插件

这条命令安装 Composer asset plugin, 用于通过 Composer 管理 bower 和 npm 包,此命令全局生效。

使用笔记代码

https://github.com/ironxu/yiint

里面包含了示例代码和相关配置,帮助更快上手

使用composer 安装代码

Yii 将安装在名为 yiint 的目录中。

2. 配置 Nginx

添加yii2 项目 nginx配置

yiint.conf [yiint/config/yiint.conf]

将yii2 的配置引入nginx 主配置文件

nginx.conf

修改hosts 绑定虚拟域名

3. 添加MySQL 配置文件

db.php [yiint/config/db.php]

修改mysql 的连接配置参数,然后创建 yii2basic 数据库。

创建数据库和用户SQL如下

4. 启动Nginx, php-fpm, mysql

最后访问http://yiint.local.com/ ,即可进入yii 欢迎页面。

参考资料