博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我 && yii2 (一)
阅读量:5173 次
发布时间:2019-06-13

本文共 2833 字,大约阅读时间需要 9 分钟。

这俩天学习了yii2 ,写点心得,嘻嘻

第一部分呢,就写下关于yii2 的mvc的一些东东吧

Yii mvc 结构

1. 控制器

控制器中的方法以 action 开头 如果遇上像 actionCreateItem 这样的方法,访问时候,url 得这么写 localhost/index.php?r=控制器名/create-item ,

用- 代替大小写

public function actionIndex(){}

Controller 中的 $request

1 //      获取 request 信息 2 $request = \Yii::$app->request; 3 //      获取所以get 的数据 4 $get = $request->get(); 5 //      获取 put ,post , patch 的数据 6 $params = $request->bodyParams; 7 //      获取头部信息 8 $header = \Yii::$app->request->headers; 9 //      获取 userAgent10 $userAgent = \Yii::$app->request->userAgent;11 //      获取Content-type12 $contype = \Yii::$app->request->contentType;13 //      获取userhost14 $userhost = \Yii::$app->request->userHost ;15 //      获取userip16 $userip = \Yii::$app->request->userIP;

 

控制器中的response

1 public function actionResponse() 2 { 3 //      获取响应信息 4 $header = \Yii::$app->response->headers; 5 //      添加响应信息 6 $header->add('pragma','no-cache'); 7 //      设置响应信息 8 $header->set('pragma' ,'No-c'); 9 //      删除响应信息10 $header->remove('pragma');11 //      设置响应文本12 \Yii::$app->response->content = "hello yii2;";13 //      数据格式化 json14 $response = \Yii::$app->response;15 $response->format = \yii\web\Response::FORMAT_JSON;16 $response->data = ['message'=>'hello zeopean' , 'status'=>1];17 echo $response->data;18 }

 

 

2. 模型

模型中的 rules 表示 对模型字段对验证规则 ,validatePassword 则是验证方法

 

模型场景 scenarios

在模型中的 定义

1 public function scenarios()2 {3 return [4 'create'    => ['message' , 'created_at' ],5 'update'    => ['message' , 'updated_at']6 ];7 }

在控制器中的使用:

 

1 public function actionUpdate($id) 2 { 3 $model = $this->findModel($id); 4 $model->setScenario('update');     //设置场景模式 5 $model->updated_at = time(); 6 if ($model->load(Yii::$app->request->post()) && $model->save()) { 7 return $this->redirect(['view', 'id' => $model->id]); 8 } else { 9 return $this->render('update', [10 'model' => $model,11 ]);12 }13 }

我们可以通过不同的场景,对模型字段进行验证  例如,我们在进行创建操作时,想要验证  created_at , message ,但是我们却没必要验证 updated_at,

故而我们的 create 场景就是这样的了,

  public function scenarios()

{   return [     'create'    => ['message' , 'created_at' ],    ] }

这个场景只针对 create 时有效 ,故而有以下代码

public function actionUpdate($id)  {    $model = $this->findModel($id);    $model->setScenario('update');     //设置场景模式

    ... 

  }

 

3.视图

3.1 使用 ActiveForm 创建表单 ,使用 ActiveForm 挂件

1 
2
field($model , 'name')->label('请输入姓名') ?>3
field($model , 'email')->label("请输入邮箱") ?>4
5
'btn btn-primary']) ?>6
7

 

3.2 静态文件的使用

  1. basic/assets/AppAsset.php进行一下配置 ,此处为全局设置

/* 全局css 文件*/public $css = ['css/site.css',];/*全局js 文件*/public $js = ['js/file.lazyload.min.js',];

  1. 在视图中初始化,让视图文件能找到 这个配置项

1 

 

  1. 在视图中 使用

    1. js 文件

registerJs('LazyLoad.js(["js/zepto.js" //这是一个延迟加载js/css文件的插件], function () {$(function(){alert("hello");});});');?>

 

    1. css 文件

registerCss($cssString);?>

 

 

转载于:https://www.cnblogs.com/zeopean/p/yii2.html

你可能感兴趣的文章
android 中 ViewPager 的平常用法 ViewPager+ Views
查看>>
POJ 2449 Remmarguts' Date (SPFA + A星算法) - from lanshui_Yang
查看>>
ZOJ 1654 二分匹配基础题
查看>>
【玩转Ubuntu】02. Ubuntu上搭建Android开发环境
查看>>
[蓝桥杯][2017年第八届真题]小计算器(模拟)
查看>>
dede上怎么让所有链接在新窗口打开
查看>>
关于PHP性能优化(转)
查看>>
浙江理工2015.12校赛-F Landlocked
查看>>
一步步学习微软InfoPath2010和SP2010--第四章节--处理SP列表表单(1)--SP列表基础...
查看>>
golang AES/ECB/PKCS5 加密解密 url-safe-base64
查看>>
我是如何用两个星期解决了本来需要两个月而且维护成本巨大的功能(解决思路与方法)...
查看>>
Chapter 2. Overview gradle概览
查看>>
OpenGL的编程环境搭建
查看>>
/etc/fstab 参数详解及如何设置开机自动挂载
查看>>
unity 解决ScrollRect嵌套滚动问题
查看>>
Android Studio安装与配置
查看>>
当前凌晨时间戳
查看>>
mongodb 限制ip访问
查看>>
direction:rtl demo
查看>>
Arch linux LXR 安装过程
查看>>