zoukankan      html  css  js  c++  java
  • 我 && 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 = yiiwebResponse::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     appassetsAppAsset::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);
    ?>


  • 相关阅读:
    ASP.NET中的MSChart 控件使用 (示例)
    Win server2003 中 右键IE属性 “无法定位序数325于动态链接库SHDOCVW.dll”
    javascript实现图片左右轮换效果(鼠标控制亦可)
    ASP.NET ServerSide Charting With OWC11——饼状图
    Flex LineChart曲线——动态加载组件
    从公交塞车,看C# 多线程同步问题
    用于.NET环境的时间测试
    ASP.NET中 Repeater嵌套应用
    GridView合并单元格(所有内容相同的单元格)
    JUnit 4 单元测试
  • 原文地址:https://www.cnblogs.com/zeopean/p/yii2.html
Copyright © 2011-2022 走看看