相关的安装及配置参考中文文档,一步一步走下来即可。
下面对这几天学习的东西进行一个简单的总结。
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;
一个完整的控制器如下:
<?php
namespace 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中写操作
<?php
namespace 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数据的相关信息。
<?php
namespace 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 去确定哪个操作方法将被用来做具体工作。