yii小物件详解 小实例
来源:互联网 发布:淘宝新店怎样开直通车 编辑:程序博客网 时间:2024/05/01 20:43
胡扯两句:刚接触Yii的时候就听说小物件特别神奇、但是并没有深入了解,只是像许多新手一样略知皮毛,直到后来经常用到小物件之后,才开始慢慢的真正感觉到其强大之处。然后就开始在网上查询资料,发现网上资料虽然挺全的,但是零零散散,不太利于像我这样的新手查询,今天趁着闲暇之余,正好有空整理整理,以便于日后参考以及新手学习。
- 先写一个简单的例子,在例子中穿插讲解,更便于理解。
- 一、 前端views页面1.下面是form表单部分123456789101112
$form
=
$this
->beginWidget(
'CActiveForm'
,
array
(
'enableClientValidation'
=> true,
//是否启用客户端验证
'clientOptions'
=>
array
(
'validateOnSubmit'
=> true,
//提交时验证
),
'htmlOptions'
=>
array
(
'class'
=>
'form-horizontal'
,
'role'
=>
'form'
,
'enctype'
=>
'multipart/form-data'
)
));
- 以上表单也就是相当于表单中<form method="post" action="" enctype="multipart/form-data">这个部分代码。
- 其中Yii小物件中的CActiveForm组件新增许多的属性,可供使用,我举出常用的属性如下:
- action:也就是表单提交的地址,默认提交的本页面。
- enableClientValidation:进行客户端验证,值为true/false。
- clientOptions:是否进行ajax动态验证,里面也有很多种方法
- 经常用到的是:validateOnSubmit:提交时验证,也就为动态ajax验证。
- 其他的在这里不进行详细讲解这个方法,如果感兴趣可以看我自己整理的文档《clientOptions属性详解》
- id:也就是表单的id
- method:如上
- htmlOptions:自定义方法,像class、enctype之类,表单上有的属性都可以写到这里
2. 下面是input表单部分123456// 1.该部分是输出表单提示的部分
<?php
echo
$form
->labelEx(
$app
,
'name'
); ?>
// 2.该部分是输出表单部分(文本框类型)
<?php
echo
$form
->textField(
$app
,
'name'
,
array
(
'class'
=>
'input'
)); ?>
// 2.该部分是输出表单错误提示部分
<?php
echo
$form
->error(
$app
,
'name'
); ?>
- 代码里面小1部分的labelEx主要显示表单前面的提示文字
- 代码里面小2部分,textField部分是个文本框类型的表单,第三个值是个数组,可以写表单的属性,比如class,maxlength,placeholder等表单属性。Yii还提供了单选按钮,复选框,等一系列类型的表单,如果需要查看其他类型请查看根据自己的理解整理的《yii小物件表单集合》
12// 代码部分
<?php
$this
->endWidget(); ?>
二、controller控制器1.下面是添加处理部分代码123456789101112131415161718192021// 代码部分
//添加处理以及页面
public
function
actionAdd(){
//创建模型
$app
=
new
App();
//添加操作
if
(isset(
$_POST
[
'App'
])) {
$app
->attributes =
$_POST
[
'App'
];
if
(
$app
->save()) {
echo
'添加成功'
;
}
else
{
// 查看模型中是否有错误阻拦
$res
=
$app
->hasErrors();
if
(
empty
(
$res
)) {
echo
'添加失败'
;
}
}
}
$this
->render(
'add'
,
array
(
'app'
=>
$app
));
这是一个比较简单的添加流程,如果其中可以参杂逻辑判断,然后再进行添加。}
2.下面是修改处理部分代码123456789101112131415161718192021// 代码部分
//修改处理以及页面
public
function
actionUpdate(
$id
){
//创建模型
$app
= App::model()->findByPk(
$id
);
//修改操作
if
(isset(
$_POST
[
'App'
])) {
$app
->attributes =
$_POST
[
'App'
];
if
(
$app
->save()) {
echo
'修改成功'
;
}
else
{
// 查看模型中是否有错误阻拦
$res
=
$app
->hasErrors();
if
(
empty
(
$res
)) {
echo
'修改失败'
;
}
}
}
$this
->render(
'update'
,
array
(
'app'
=>
$app
));
这是一个比较简单的修改流程,如果其中可以参杂逻辑判断,然后再进行修改。}
注:可以看出修改和添加不同之处仅仅在于创建模型之处,当模型为new
App()
创建时,表单(save)为新增操作。当模型为App::model()时,表单(save)为修改操作,当为修改操作时,表单会有默认值。为数据库中的字段~三、model模型部分下面是简单模型部分代码1234567891011121314151617181920212223242526272829303132//APP类
class
App
extends
CActiveRecord {
static
function
model(
$classname
=
__CLASS__
) {
return
parent::model(
$classname
);
}
//数据表名
public
function
tableName() {
return
'{{app}}'
;
}
//字段名称
public
function
attributeLabels() {
return
array
(
'name'
=>
'年龄:'
,
'class'
=>
'班级:'
,
'age'
=>
'年龄:'
);
}
//rules 上传规则验证
public
function
rules() {
return
array
(
array
(
'name'
,
'required'
,
'message'
=>
'请填写姓名'
),
array
(
'title'
,
'unique'
,
'message'
=>
'姓名已经存在'
),
array
(
'age'
,
'required'
,
'message'
=>
'请填写年龄'
),
array
(
'age'
,
'numerical'
,
'min'
=>
'1'
,
'max'
=>
'199'
,
'tooSmall'
=>
'年龄必须为1到199'
,
'tooBig'
=>
'年龄必须为1到199'
),
// 如果非必填项,也要在这里定义否则数据库接收不到
array
(
'class'
,
'safe'
),
);
分析:上列为数据model实例,一般用到的有四个方法。第一个方法和第二个数据表名方法为必写,第三个字段名称方法和第四个规则验证方法为小物件所用,这里着重讲后两个。当然你也可以用gii生成,由于gii代码较多,并且大部分为无用代码,所以自己手写了一段,供大家理解。}
字段名称方法:这里对应的是小物件的提示,以及生成表单,只有在这里定义之后,小物件才会生成。看过上述前端view页面之后,实际并不难于理解,这里不进行详细讲解,如感兴趣,可以上网查阅源码。rules 上传规则验证(很重要):上述只列出来4个Yii自带的验证方法,书写格式也就是一个二维数组,在这里将这四个方法进行简单讲解,其他的验证方法请移步到《yii验证规则》required:如果为此项验证规则,所属字段为必填项。unique:如果为此项验证规则,会先去数据库检索该字段是否有该值,无则成功填入numerical:如果此项验证规则,会验证此字段是否位数字,并且大于1,小于199,如果验证成功,则填入库safe:如果此项验证规则,字段将不验证,并且可以为空。后言:Yii小物件说深奥,实际也就这么简单,稍一用心了解,就全部理解了。有可能看此篇文章有做了很久大大牛,也有可能也只是一个新手。如果是新手,工资也有可能少的可怜,希望大家不要气馁,要继续努力~如果是大牛,希望也不要恶意去评价此篇文章,如果不喜欢可以抱着批改的心态去看待~谢谢大家花时间看完这篇文章。请大家尊重原创,本文也花费了不少心思,转发请写明出处url:http://blog.5ibc.net/p/58982.html
0 0
- yii小物件详解 小实例
- yii小物件详解
- Yii小物件widget的简单操作
- yii小物件前端表单集合
- yii 表单小物件使用注意事项
- Yii不用小物件,如何做到搜索条件提交
- 通过JavaScript调用显示Yii隐藏的小物件
- yii小物件Widget创建表单,action提交到指定位置
- YII用户注册和用户登录(二)之登录和注册在视图通过表单使用YII小物件并分析
- 乔布斯的世界: “小物件”,大世界
- 乔布斯的世界: “小物件”,大世界
- PHP学习之小物件(widget)
- YII 小模块功能
- Yii小技巧积累
- yii竞猜小功能
- yii 小知识点总结
- 内存分配(4)–LOKI的小物件分配器
- YII常用小技巧-不断更新
- 2.4.2 浮点数陷阱
- easyUI dialog 弹框显示百度地图,然后全屏只显示dialog的宽高
- 通讯录(文件版)
- 时间转换UDF函数
- rabbit 介绍
- yii小物件详解 小实例
- scala数组,自定义类型,自定义排序等
- Java中null关键字
- 【hdu 1787】 GCD Again(根号n求phi)
- cmd命令--cd,dir
- 【机器视觉】各种跟CV、AR相关的C/C++代码收集
- bzoj 1180: [CROATIAN2009]OTOCI link cut tree
- php能够干什么
- 棋盘分割--记忆化搜索