Yii框架2.0的视图和widgets表单的使用
2.0的控制器的创建和action方法的添加和1.0的基本是一样的。但我发现他的widgets 的ActiveForm和1.1版本有些不一样的地方。
对于视图基本也是一样的,有render 和 renderPartial两个方法,后一个不会调入布局。也不会自动调入jquery组件,但在设置布局上有些不一样:
1.1是在components\Controller.php里面有个$layout 的变量,通过修改这个变量的值来改变布局的。
2.0里面是没有通过在父类Controller里面配置的,有个findLayoutFile的方法,这里分析了各种情况,默认是采用的main,当然也可以像1.1那样直接写在父类里面还可以写在配置文件web.php里,'layout' => 'mine', 还可以同 layoutPath 设置布局文件的路径,如果有个别情况需要用自己的布局,可以在他的控制器里修改 $this->layout = 'mine',这样就会调用layout目录下的mine.php布局。
可以获取前台访问的路径。
$baseUrl = Yii::$app->request->baseUrl 来获取当前脚本的目录,因为此框架是单入口模式,所以就是根目录。
其中 1.1版本的时候是用 Yii::app() 来获取当前Yii实例的,2.0版本采用的事 Yii::$app 来获取当前实例。
首先是获取对象:
2.0版本里是这样的 $form = ActiveForm::begin(); 而且要使用 use yii\widgets\ActiveForm;
1.1版本里是 $form = $this->beginWidget('CActiveForm')。
我在2.0版本里的widgets目录下没有找到CActiveForm.php 只有ActiveForm.php 文件。
其次是获取 表单里的对象也不一样了,比如文本框,
2.0里面是这样的 $form->field($LoginForm, 'name', ['id'=>'name']);
1.1里面是这样的 $form->textField($loginForm, 'name', array('id'=>'name'));
看官方文档的时候发现不仅仅可以用ActiveForm可以创建form里面的元素,yii\helpers\Html 也可以创建,例如例子里就有个submit按钮就是用Html创建的。
Html::submitButton('提交', ['class'=>'btn btn-primary']);
比如要建个input 加入自己的属性的话 需要调用 textInput方法。例如。
<?php echo $form->field($model, 'username')->textInput(['id'=>'userName']); ?>
文本框:textInput();
密码框:passwordInput();
单选框:radio(),radioList();
复选框:checkbox(),checkboxList();
下拉框:dropDownList();
隐藏域:hiddenInput();
文本域:textarea(['rows'=>3]);
文件上传:fileInput();
提交按钮:submitButton();
重置按钮:resetButtun(); <?php
$form = ActiveForm::begin(['action' => ['test/getpost'],'method'=>'post',]); ?> <? echo $form->field($model, 'username')->textInput(['maxlength' => 20]) ?> <? echo $form->field($model, 'password')->passwordInput(['maxlength' => 20]) ?> <? echo $form->field($model, 'sex')->radioList(['1'=>'男','0'=>'女']) ?> <? echo $form->field($model, 'edu')->dropDownList(['1'=>'大学','2'=>'高中','3'=>'初中'], ['prompt'=>'请选择','style'=>'width:120px']) ?> <? echo $form->field($model, 'file')->fileInput() ?> <? echo $form->field($model, 'hobby')->checkboxList(['0'=>'篮球','1'=>'足球','2'=>'羽毛球','3'=>'乒乓球']) ?> <? echo $form->field($model, 'info')->textarea(['rows'=>3]) ?> <? echo $form->field($model, 'userid')->hiddenInput(['value'=>3]) ?> <? echo Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?> <? echo Html::resetButton('重置', ['class'=>'btn btn-primary','name' =>'submit-button']) ?> <?php ActiveForm::end(); ?>
但是它除了input 等标签外还会附加很多其他的标签,比如在外面套了一层div之类的。要想只要input标签,就要使用yii\helpers\Html的active系列函数生成表单。
<?php $form = ActiveForm::begin(); ?>
<?php echo Html::activeTextInput($model, 'username', ['id'=>'userName']); ?>
<?php echo Html::activePasswordInput($model, 'password', ['id'=>'psd']); ?>
<?php echo Html::activeTextInput($model, 'captcha', ['id'=>'verify']); ?>
<?php echo Html::submitInput('', ['id'=>'sub']) ?>
<?php ActiveForm::end();?>
Yii框架2.0的视图和widgets表单的使用的更多相关文章
- Yii框架2.0的安装过程
Yii框架是个不错的php开发框架,大型项目上都可以使用.和大多框架一样他也是开源,而且采用了mvc结构的. Yii1.*,直接下载然后用脚步可以创建自己的项目了,最近看了下Yii2.0版本的,他推荐 ...
- Bootstrap3.0学习第六轮(表单)
Bootstrap3.0学习第六轮(表单) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.h ...
- Yii框架2.0的小部件
小部件是视图里的可重用单元. 小部件是在视图中使用的,但是可能需要使用控制器传给他的模型,比如在渲染表单的时候.比如一般的时间拾取器就可以直接砸视图里加入如下代码就可以: <?php use y ...
- Yii框架2.0的模型
模型是 MVC 模式中的一部分, 是代表业务数据.规则和逻辑的对象. 可通过继承 [[yii\base\Model]] 或它的子类定义模型类,基类[[yii\base\Model]]支持许多实用的特性 ...
- Yii框架怎么寻找对应视图
render()内容; public function render($view,$data=null,$return=false) { if($this->beforeRender($view ...
- Yii框架2.0的Gii
Yii框架的Gii在我看来算是个快速创建器,当然对于学习来说意义不大,但对于已经懂得他的原理并用他开发的话,就是个快速开发的好工具. 他能快速的创建控制器,模块,crup,插件,Module. 打开g ...
- SSM框架中如何简便上传文件表单
此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...
- web框架-(六)Django补充---form表单验证
一.form表单验证 1. 常规html页面的form表单验证 常规页面中,如果想实现对表单中用户输入信息的数据验证,需要配合Ajax来实现. 使用前我们先来熟悉下函数参数:request,其中包含的 ...
- Java框架之SpringMVC 04-视图解析-Spring表单-JSON-上传下载
SpringMVC 视图解析 请求处理方法(controller方法)执行完成后,最终返回一个 ModelAndView 对象,即使出现异常也会返回一个 ModelAndView 对象.对于那些返回 ...
随机推荐
- NIO--SocketChannel发送HTTP请求
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChanne ...
- ewebeditor编辑器配合IIS6.0解析漏洞拿shell
很明显这是一个ewebeditor编辑器,这个编辑器存在可遍历目录可创建文件夹等一系列漏洞.直接在url处加../即可.若要创建文件夹直接在url后面写文件夹名称即可. 上传一张shell图片,抓包改 ...
- groupBox和panel
private void Form1_Load(object sender, EventArgs e) { groupBox1.Text = "信息表"; panel1.Borde ...
- Unity3D 5.0版本+注册工具分享
Unity3D引擎5.0正式版本发布也有一段时间了.笔者今天下载了新版本顺便分享一下资源. 主要有两个资源,一个是5.0f4的官方客户端,另外一个是vs的调试插件.有需要的盆友就拿去.都在下面的连接地 ...
- KMP算法完整教程 (上)
KMP算法完整教程 全称: Knuth_Morris_Pratt Algorithm(KMP算法) 类型: 高级检索算法 功能: 字符串匹配查找 提出者: D.E.Knuth(克努兹),J.H.Mor ...
- 在CentOS中编译FFmpeg for Android静态库(含fdk aac,x264)
本文可以编译出集成了x264和fdk_aac的库,而且支持neon 下载源码: https://github.com/mstorsjo/fdk-aac http://sourceforge.net/p ...
- 使用asp.net调用谷歌地图api
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...
- javah 错误: 找不到 'com.example.tony.gpiojni.JNITest' 的类文件
在 android studio的Terminal中运行javah转换.class文件为.h文件失败, 提示: 错误: 找不到 'com.example.tony.gpiojni.JNITest' 的 ...
- 匿名内部类 Inner class
先说结论 匿名内部类分两种,一种是接口的匿名实现,一种是类的匿名子类!后者往往用于修改特定方法. 再说起因 本来以为匿名内部类很简单,就是接口的匿名实现,直到我发现了下面这段代码: public cl ...
- ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点
LinkedList接口(在代码的使用过程中和ArrayList没有什么区别) ArrayList底层是object数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点. 而在L ...