Html助手

1 .在@app\views\test的index.php中:

<?php
//引入命名空间
use yii\helpers\Html;
?>
<?php //【一】表单:Html::beginForm(提交地址,提交方法,属性数组);?>

<?=Html::beginForm('','post',['id'=>'form','class'=>'form','data'=>'myself']);?>

	<?php //【二】输入框:Html::input(类型,name值,默认值,属性数组);?>

	<?=Html::input('text','test','',['class' => 'form-control','placeholder'=>'hehe']);?>
<?=Html::input('email','email','admin@admin.com',['class' => 'form-control']);?>
<?=Html::input('password','pwd','',['class' => 'form-control']);?>
<?=Html::input('hidden','hidden','',['class' => 'form-control']);?> <hr />
<?php //Html::表单类型Input(name值,默认值,属性数组);?> <?=Html::textInput('test','hehe',['class' => 'form-control']);?>
<?=Html::textInput('email','admin@admin.com',['class' => 'form-control']);?>
<?=Html::passwordInput('pwd','',['class' => 'form-control']);?>
<?=Html::hiddenInput('hidden','',['class' => 'form-control']);?> <hr />
<?php //【三】文本域:Html::textarea(表单name,默认值,属性数组);?>
<?=Html::textarea('area','',['class'=>'form-control','rows'=>'3']);?> <hr />
<?php //【四】单选按钮:Html::radio(name值,是否选中,属性数组);?>
<?=Html::radio('sex',true,['calss'=>'form-control']);?>
<?php //单选按钮列表:Html:;radioList(name值,选中的值,键值对列表,属性数组); ?>
<?=Html::radioList('height','1',['1'=>'160','2'=>'170','3'=>'180'],['class'=>'form-control']);?> <hr />
<?php //【五】复选框:Html::checkbox(name值,是否选中,属性数组);?>
<?=Html::checkbox('haha',true,['calss'=>'form-control']);?>
<?php //单选按钮列表:Html:;checkboxList(name值,选中的值,键值对列表,属性数组); ?>
<?=Html::checkboxList('xixi','1',['1'=>'160','2'=>'170','3'=>'180'],['class'=>'form-control']);?> <hr />
<?php //【六】下拉列表:Html:;dropDownList(name值,选中的值,键值对列表,属性数组); ?>
<?=Html::dropDownList('list','2',['1'=>'160','2'=>'170','3'=>'180'],['class'=>'form-control']);?> <hr />
<?php //【七】控制标签Label:Html::label(显示内容,for值,属性数组); ?>
<?=Html::label('显示的','test',['style'=>'color:#ff0000']);?> <hr />
<?php //【八】上传控件:Html::fileInput(name值,默认值,属性数组); ?>
<?=Html::fileInput('img',null,['class'=>'btn btn-default']);?> <hr />
<?php //【九】按钮:; ?>
<?=Html::button('普通按钮',['class'=>'btn btn-primary']);?>
<?=Html::submitButton('提交按钮',['class'=>'btn btn-primary']);?>
<?=Html::resetButton('重置按钮',['class'=>'btn btn-primary']);?> <?=Html::endForm();?>

在Test控制器中注入视图:

return $this->render('index');

浏览结果:

2 .与模型字段关联的Html

和生成普通的表单基本一样,只是需要在操作中对视图注入模型,视图中表单生成方式前面多了active。

在Test控制器的index操作中注入视图与模型数据:

<?php
namespace app\controllers; //定义命名空间
use yii\web\Controller; //引入命名空间
use app\models\Article;
class TestController extends Controller{
public function actionIndex(){
$model = Article::findOne(1);
return $this->render('article',['model'=>$model]);
}
}

在@app\views\test目录下新建article.php

<?php
use yii\helpers\Html;
?>
<?=Html::beginForm('','post',['name'=>'article']);?>
<?=Html::activeInput('text',$model,'title',['class'=>'form-control']);?>
<hr />
<?=Html::activeTextInput($model,'title',['class'=>'form-control']);?>
<?=Html::activeTextArea($model,'desc',['class' => 'form-control']);?>
<?=Html::activeTextArea($model,'content',['class'=>'form-control']);?>
<?=Html::endForm();?>

我们建立一个按钮来提交看一下

在@app\views\test目录的article.php中的
<?=Html::activeTextArea($model,'content',['class'=>'form-control']);?>下面一行加上一个提交按钮:
<?=Html::submitButton('提交',['class'=>'btn btn-primary']);?>
在Test控制器的index操作中判断提交打印一下看是否接受到参数,在$model = Article::findOne(1);上面一行添加代码:

if(\Yii::$app->request->isPost){
header('Content-Type:text/html;charset=utf-8');
echo '<pre>';
var_dump(\Yii::$app->request->post());
echo '</pre>';
exit();
}

得到提交的数据了:

3 .Html转义

Yii2提供了html转义与反转义,使用\Yii\helpers\Html::encode($html)和\yii\helpers\Html::decode($html)

4 .可以通过\yii\helpers\Html::error(模型,字段名,属性数组)来进行验证等错误输出.

5 .生成标签的代码类似:

<?= Html::tag('p', Html::encode($user->name), ['class' => 'username']) ?>

Request组件

  • 简要

    1.一个应用请求是通过yii\web\Request对象来表示的,用过调用\Yii::$app->request来获取

  • Request对象的一些属性和方法
    1.request对象 			\Yii::$app->request
    2.判断Ajax请求 \Yii::$app->request->isAjax
    3.判断POST请求 \Yii::$app->request->isPost
    4.获取浏览器信息 \Yii::$app->request->userAgent
    5.获取客户端IP \Yii::$app->request->userIp
    6.读取所有get数据 \Yii::$app->request->get()
    7.读取单个get数据 \Yii::$app->request->get('r')
    8.读取所有post数据 \Yii::$app->request->post()
    9.读取单个post数据 \Yii::$app->request->get('post')
    10.获取不包含host info的url部分 \yii::$app->request->url
    11.获取整个URL \Yii::$app->request->absoluteUrl
    12.获取host info部分 \Yii::$app->request->hostInfo;
    13.入口脚本之后查询字符串之前 \Yii::$app->request->pathInfo
    14.查询字符串 \Yii::$app->request->queryString
    15.host info之后,入口脚本之前部分 \Yii::$app->request->baseUrl;

Yii2实用基础学习笔记(二):Html助手和Request组件 [ 2.0 版本 ]的更多相关文章

  1. Java基础学习笔记二十八 管家婆综合项目

    本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...

  2. javascript第二遍基础学习笔记(二)

    一.操作符 1.一元操作符: 自加自减(分前置和后置2种):++.-- 区别:前置的先自加或自减,后进行计算:而后置的是先进行计算,后自加或自减(在其会产生负面影响时才能体现区别): ; i++; / ...

  3. Java基础学习笔记二十一 多线程

    多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...

  4. Java基础学习笔记二十五 MySQL

    MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 ...

  5. Java基础学习笔记二十六 JDBC

    什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...

  6. Java基础学习笔记二十七 DBUtils和连接池

    DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简化开发 ...

  7. 使用JSP实现输出(web基础学习笔记二)

    Jsp:Java Server Page 服务器端的Java页面,动态网页技术 jsp注释 显式注释:这种注释客户端是允许看见的;<!--html注释--> 隐式注释:这种注释客户端是看不 ...

  8. yii2源码学习笔记(二十)

    Widget类是所有部件的基类.yii2\base\Widget.php <?php /** * @link http://www.yiiframework.com/ * @copyright ...

  9. Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...

随机推荐

  1. Android的数据存储方式概述

    数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 ...

  2. gcc 4.8更新gcc 4.9 5.4版本等

    转载:http://www.linuxidc.com/Linux/2017-01/139976.htm 如果还在使用较旧版本的Ubuntu,或者是Ubuntu LTS,那么我们是很难体验新版gcc的. ...

  3. EarlyZ disable( earlyz失效

    There are a few ways to disable EarlyZ list here: Shader depth output disabled Alpha test with depth ...

  4. HTML5游戏实战(1):50行代码实现正面跑酷游戏

    前段时间看到一个"熊来了"的HTML5跑酷游戏,它是一个典型的正面2D跑酷游戏,这里借用它来介绍一下用Gamebuilder+CanTK开发正面跑酷游戏的基本方法. CanTK(C ...

  5. idea 转普通项目为maven 项目

    1.项目上右键 Add Framework Support. 2.选择maven,点击OK.

  6. python解析json文件报错No JSON object could be decoded

    2017-04-25 可用Nodepad++将json文件打开并以UTF8无BOM格式保存.

  7. 2017.10.13 git提交时忽略不必要的文件或文件夹

    参考来自:git学习六:git提交忽略不必要的文件或文件夹 1.应用场景 创建maven项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本. 例如如下截图,实际开发中我们只需提交: ...

  8. C++ 大规模数据排序(100G数据 使用 4G 内存 排序)

    思路很简单,先分段排序,存储到临时文件中,然后合并. 使用10000个整数来模拟大数据,每次读取100个到内存中. #include <stdint.h> #include <std ...

  9. Laravel之命令

    一.创建命令 php artisan make:console SendEmails 上述命令将会生成一个类app/Console/Commands/SendEmails.php,当创建命令时,--c ...

  10. STL学习笔记(变序性算法)

    变序性算法改变元素的次序,但不改变元素值. 这些算法不能用于关联式容器,因为在关联式容器中,元素有一定的次序,不能随意变动. 逆转元素次序 void reverse(BidirectionalIter ...