Yii2框架基础篇学习-控制器

来源:互联网 发布:mac换输入法快捷键 编辑:程序博客网 时间:2024/05/17 08:54

相关的安装及配置参考中文文档,一步一步走下来即可。
下面对这几天学习的东西进行一个简单的总结。
1、Yii的应用结构:
这里写图片描述

每个应用都有一个入口脚本 web/index.php,这是整个应用中唯一可以访问的 PHP 脚本。一个应用处理请求的过程如下:

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

可以看到中间有模型-视图-控制器 ,即常说的MVC。入口脚本并不会处理请求,而是把请求交给了应用主体,在处理请求时,会用到控制器,如果用到数据库中的东西,就会去访问模型,如果处理请求完成,要返回给用户信息,则会在视图中回馈要返回给用户的内容。
2、控制器的创建
命名规范:控制器命名时必须以Controller为结尾;
命名空间:需要给控制器指定命名空间,即控制器所在的目录

namespace frontend\controllers;

如果控制器想要访问其他的类,则需要使用use将这个类引入页面;

use yii\web\Controller;use Yii;

一个完整的控制器如下:

<?phpnamespace frontend\controllers;//命名空间use yii\web\Controller;//引入类class HelloController extends Controller { //继承自Controller//这里写操作}?>

控制器中需要写操作,操作是最终用户可以直接访问并执行的对象。一个操作的执行结果就是最终用户收到的响应内容。操作必须声明在控制器中。
操作命名规范:Yii 使用 action 前缀区分普通方法和操作。action 前缀后面的名称被映射为操作的 ID。操作ID的首字母要大写,如下:

public function actionIndex(){   $request = YII::$app->request;//获取请求组件   $request->get('id');//获取get方法数据   $request->post('id');//获取post方法数据   $request->isGet;//判断是不是get请求   $request->isPost;//判断是不是post请求   $request->userIp;//获取用户IP地址    $res = YII::$app->response;//获取响应组件    $res->statusCode = '404';//设置状态码    $this->redirect('http://baodu.com');//页面跳转    $res->sendFile('./b.jpg');//文件下载

3、控制器-session处理
在HelloController中写操作

<?phpnamespace frontend\controllers;use Yii;use yii\web\Controller;class HelloController extends Controller{    public function actionIndex(){    $session = YII::$app->session;    $session->isActive;//判断session是否开启    $session->open();//开启session    //设置session值    $session->set('user','zhangsan');//第一个参数为键,第二个为值    $session['user']='zhangsan';    //获取session值    $session->get('user');    $session['user'];    //删除session值    $session-remove('user');    unset($session['user']);    }}?>

4、控制器-Cookie处理
这里写图片描述
Chrome里面,审查元素时再Resource里面可以看到cookie数据的相关信息。

<?phpnamespace frontend\controllers;use Yii;use yii\web\Controller;class HelloController extends Controller{    public function actionIndex(){    $cookies = Yii::$app->response->cookies;//获取cookie对象    $cookie_data = array('name'=>'user','value'=>'zhangsan')//新建cookie数据    $cookies->add(new Cookie($cookie_data));    $cookies-remove('id');//删除cookie    $cookies.getValue('user');//获取cookie}?>

5、路由
简单说一下yii中的路由
http://hostname/index.php?r=site/say
    上面 URL 中的参数 r代表路由,是整个应用级的,指向特定操作的独立 ID。路由格式是 控制器 ID/操作 ID。应用接受请求的时候会检查参数,使用控制器 ID 去确定哪个控制器应该被用
来处理请求。然后相应控制器将使用操作 ID 去确定哪个操作方法将被用来做具体工作。

0 0
原创粉丝点击