我 && yii2

Posted zeopean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我 && yii2相关的知识,希望对你有一定的参考价值。

这俩天学习了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 //      获取 userAgent
10 $userAgent = \\Yii::$app->request->userAgent;
11 //      获取Content-type
12 $contype = \\Yii::$app->request->contentType;
13 //      获取userhost
14 $userhost = \\Yii::$app->request->userHost ;
15 //      获取userip
16 $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 //      数据格式化 json
14 $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 <?php $form= ActiveForm::begin(); ?>
2 <?= $form->field($model , \'name\')->label(\'请输入姓名\') ?>
3 <?= $form->field($model , \'email\')->label("请输入邮箱") ?>
4 <div class="form-group">
5 <?= html::submitButton("Submit" , [\'class\' => \'btn btn-primary\']) ?>
6 </div>
7 <?php $form= ActiveForm::end(); ?>

 


3.2 静态文件的使用

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

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



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

1 <?php
2     \\app\\assets\\AppAsset::register($this);
3 ?>

 


  1. 在视图中 使用

    1. js 文件

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

 

    1. css 文件

<?php
$cssString = ".gray-bg{color:red;}";
$this->registerCss($cssString);
?>

 


 

以上是关于我 && yii2的主要内容,如果未能解决你的问题,请参考以下文章

我 && yii2(日志埋点,邮件提醒)

Yii2验证码使用教程

Yii2:如何使用 jQuery 使 <div> 禁用/只读

对这个带有 & 不带 = 的代码片段返回类型感到非常困惑

为 Blogger 上的博客格式化代码片段 [关闭]

如何在 Javadoc 中使用 @ 和 符号格式化代码片段?